コンピュート システムテーブルリファレンス
プレビュー
この機能はパブリックプレビュー段階です。
この記事では、スキーマやサンプルクエリなど、コンピュート システムテーブルの概要について説明します。 現在、使用可能なクラスター システムテーブルは 2 つあります: clusters
とnode_types
。
クラスターテーブルスキーマ
クラスター テーブルは、汎用クラスターとジョブ クラスターのクラスター構成の履歴をすべて含む、ゆっくりと変化するディメンション テーブルです。
クラスター システムテーブルはsystem.compute.clusters
にあり、次のスキーマを持ちます:
列名 |
データ型 |
説明 |
例 |
---|---|---|---|
|
string |
このクラスターが作成されたアカウントの ID。 |
|
|
string |
このクラスターが作成されたワークスペースの ID。 |
|
|
string |
このレコードが関連付けられているクラスターの ID。 |
|
|
string |
クラスターのユーザー定義名。 |
|
|
string |
クラスター所有者のユーザー名。 デフォルトは クラスター 作成者によって異なりますが、クラスターAPIを通じて変更することもできます。 |
|
|
timestamp |
このコンピュート定義の変更のタイムスタンプ。 |
|
|
timestamp |
クラスターが削除されたときのタイムスタンプ。 クラスターが削除されていない場合、値は |
|
|
string |
ドライバー ノードの種類の名前。 これは、クラウド プロバイダーのインスタンス タイプ名と一致します。 |
|
|
string |
ワーカー ノード タイプ名。 これは、クラウド プロバイダーのインスタンス タイプ名と一致します。 |
|
|
bigint |
労働者の数。 固定サイズのクラスターに対してのみ定義されます。 |
|
|
bigint |
設定された最小労働者数。 このフィールドはオートスケール クラスターに対してのみ有効です。 |
|
|
bigint |
設定された最大ワーカー数。 このフィールドはオートスケール クラスターに対してのみ有効です。 |
|
|
bigint |
設定された自動終了期間。 |
|
|
ブーリアン |
オートスケール ディスクの有効化ステータス。 |
|
|
マップ |
クラスターのユーザー定義タグ (デフォルトのタグは含まれません)。 |
|
|
string |
クラスターの作成者を示します: |
|
|
array |
init スクリプトのパスのセット。 |
|
|
構造体 |
AWS 固有の設定。 |
|
|
構造体 |
Azure 固有の設定。 |
|
|
構造体 |
GCP 固有の設定。 このフィールドは空になります。 |
|
|
string |
ドライバーがインスタンス プール上に構成されている場合のインスタンス プール ID。 |
|
|
string |
ワーカーがインスタンス プール上に構成されている場合のインスタンス プール ID。 |
|
|
string |
クラスターの Databricks Runtime。 |
|
|
timestamp |
コンピュート定義の変更のタイムスタンプ。 |
|
|
日付 |
日付を変更します。 保持に使用されます。 |
|
ノード・タイプ・テーブル・スキーマ
ノード タイプ テーブルには、現在使用可能なノード タイプとその基本的なハードウェア情報が記録されます。 ノード タイプ システム テーブルはsystem.compute.node_types
にあり、次のスキーマを持ちます。
列名 |
データ型 |
説明 |
例 |
---|---|---|---|
|
string |
このクラスターが作成されたアカウントの ID。 |
|
|
string |
ノード・タイプの一意の識別子。 |
|
|
double |
インスタンスの vCPU の数。 |
|
|
ロング |
インスタンスの合計メモリ。 |
|
|
ロング |
インスタンスの GPU の数。 |
|
既知の制限事項
2023 年 10 月 23 日より前に削除済みとしてマークされたクラスターは、クラスター テーブルに表示されません。 これにより、
system.billing.usage
テーブルからの結合が クラスター テーブルの クラスター レコードと一致しなくなる可能性があります。 すべてのアクティブなクラスターがバックフィルされました。クラスター テーブルには、汎用クラスターとジョブ クラスターのレコードのみが含まれます。 Delta Live Tablesクラスターまたは SQL ウェアハウスは含まれていません。
サンプル クエリ
次のサンプル クエリを使用して、クラスターに関する一般的な質問に答えることができます。
注:
これらの例では、クラスター テーブルをsystem.billing.usage
テーブルと結合します。 課金レコードはリージョンをまたがっており、クラスター レコードはリージョン固有であるため、課金レコードはクエリ対象のリージョンのクラスター レコードとのみ一致します。 別のリージョンのレコードを表示するには、そのリージョンでクエリを実行してください。
クラスターレコードを最新の請求レコードと結合する
このクエリは、時間の経過に伴う支出を理解するのに役立ちます。 usage_start_time
を最新の請求期間に更新すると、請求レコードの最新の更新が取得され、クラスター データに結合されます。
各レコードは、その特定の実行中にクラスター所有者に関連付けられます。 したがって、クラスターの所有者が変更された場合、クラスターが使用された時期に基づいて、コストは正しい所有者にロールアップされます。
SELECT
u.record_id,
c.cluster_id,
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
ORDER BY cluster_id, usage_start_time desc;
クラスターのコストをクラスター所有者に割り当てる
コンピュートのコストを削減したい場合は、このクエリを使用して、アカウント内のどのクラスター所有者が最も多くの DBU を使用しているかを確認できます。
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 >= '2023-01-01'
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;