SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Azure のコストを Parquet ファイルでエクスポートして SQL で検索する

leave a comment

タイトルの通りですが、Azure のコストの分析をしたかったので、Parquet ファイルでエクスポートして、SQL で検索をしたという無いようです。

コストのエクスポート

コストのエクスポートですが、Cost Management のエクスポート機能を使用して Parquet ファイルでストレージアカウントにエクスポートすることができます。

これを次のように設定をし、デイリーでエクスポートするように設定しています。

データのエクスポートはデイリーで実行されますが、ディレクトリには該当月の最新データのみが存在するようにしてデータが保存されるようですので、以下の設定であればファイルのライフサイクル管理は意識しなくても良いかと。毎日エクスポートタイミングの最新のデータが保存された状態となります。

image

どのようなスキーマで出力されるかについては、契約形態によって異なりますが Cost Management データセットスキーマインデックス でスキーマを確認することができます。

 

SQL による確認

SQL による確認は、Azure ストレージに対して SQL を実行する方法であれば何でも良いかと。私はアドホックにクエリが実行できれば良いので、OPENROWSET BULK を使用して検索を行っています。

Azure 上で完結指せるなら Synapse Analytics の Serverless SQL Pool が手軽ではないでしょうか。

次のようなクエリで出力先のストレージの 外部データソース を作成し、
(以下のクエリは ADLS Gen2 を想定したもの)

CREATE EXTERNAL DATA SOURCE CostContainer
WITH(
	LOCATION = 'abfss://cost@xxxxxx.dfs.core.windows.net'
)
GO

 

次のようなクエリで検索を行います。


SELECT
    *, 
    CAST(BilledCost / SUM(BilledCost) OVER() * 100 AS numeric(5,2)) AS CostRatio, 
    SUM(BilledCost) OVER() AS Total
FROM
(
    SELECT 
        ResourceType, 
        ChargeDescription, 
        SkuMeter,
        x_ResourceGroupName,
        ResourceName,
        CAST(SUM(PricingQuantity) AS numeric(12,4)) AS PricingQuantity, 
        PricingUnit, 
        CAST(SUM(BilledCost) AS numeric(12,4)) AS BilledCost,
        BillingCurrency,
        MAX(x_BillingExchangeRate) AS BillingExchangeRate,
        CAST(MAX(ChargePeriodStart) AS date) AS Last_ChargePeriodStart
    FROM 
        OPENROWSET (
            BULK '/*/*/202512*/*/*.parquet',
            DATA_SOURCE = 'CostContainer',
            FORMAT = 'PARQUET'
        ) AS T
    GROUP BY 
        ResourceType, ChargeDescription, SkuMeter, x_ResourceGroupName, ResourceName, PricingUnit, BillingCurrency
) AS T2
ORDER BY 
    BilledCost DESC
GO 

 

次の画像が実際にクエリを実行して取得した情報となります。(リソース名等に関しては削除しています)

image

Azure Storage Discovery を一時的に Standard に変更し、その後 Free に戻すことを忘れていたので、コストが発生していることに今日気がづきました…。

Share

Written by Masayuki.Ozawa

12月 24th, 2025 at 10:23 pm

Posted in Azure,Cost

Tagged with ,

Leave a Reply