SQウェアハウスだけでなく、クラスターに関するシステムテーブルも利用できるようになっています。
クラスター テーブルは、汎用クラスターとジョブ クラスターの時間の経過に伴うクラスター構成の完全な履歴を含む、変化の遅いディメンション テーブルです。
クラスター システム テーブルはsystem.compute.clusters
にあり、次のスキーマを持ちます。
ノード タイプ テーブルは、現在使用可能なノード タイプとその基本的なハードウェア情報をキャプチャします。 ノード型システム テーブルは
system.compute.node_types
にあり、次のスキーマを持ちます。
クラスターレコードを最新の請求レコードと結合する
すでに利用量のテーブルがあるので結合すると、クラスターと利用量をマッピングできます。以下の例ではcurrent_user()
を使って、自分自身が所有しているクラスターに限定しています。あと、クラスター名を返すように変更しています。
SELECT
u.record_id,
c.cluster_name,
c.owned_by,
c.change_time,
u.usage_start_time,
u.usage_quantity
FROM
system.billing.usage u
JOIN system.compute.clusters c
JOIN (SELECT u.record_id, c.cluster_id, max(c.change_time) change_time
FROM system.billing.usage u
JOIN system.compute.clusters c
WHERE
u.usage_metadata.cluster_id is not null
and u.usage_start_time >= '2023-01-01'
and u.usage_metadata.cluster_id = c.cluster_id
and date_trunc('HOUR', c.change_time) <= date_trunc('HOUR', u.usage_start_time)
GROUP BY all) config
WHERE
u.usage_metadata.cluster_id is not null
and u.usage_start_time >= '2023-01-01'
and u.usage_metadata.cluster_id = c.cluster_id
and u.record_id = config.record_id
and c.cluster_id = config.cluster_id
and c.change_time = config.change_time
and c.owned_by = current_user()
ORDER BY cluster_name, usage_start_time desc;
クラスターのコストをクラスター所有者に帰属させる
SELECT
u.record_id record_id,
c.cluster_id cluster_id,
max_by(c.owned_by, c.change_time) owned_by,
max(c.change_time) change_time,
any_value(u.usage_start_time) usage_start_time,
any_value(u.usage_quantity) usage_quantity
FROM
system.billing.usage u
JOIN system.compute.clusters c
WHERE
u.usage_metadata.cluster_id is not null
and u.usage_start_time >= '2024-01-1'
and u.usage_metadata.cluster_id = c.cluster_id
and c.change_time <= u.usage_start_time
GROUP BY 1, 2
ORDER BY cluster_id, usage_start_time desc;
ご活用ください!