BI Engine のモニタリング
BigQuery BI Engine は、メモリキャッシュと高速な実行を使用して、BI シナリオ向けの BigQuery を高速化します。高速化の詳細は、INFORMATION_SCHEMA と Cloud Monitoring の指標を使用してモニタリングできます。
Cloud Monitoring
Cloud Monitoring を使用して、BigQuery BI Engine のアラートをモニタリングして構成できます。BI Engine 指標のダッシュボードを作成する方法については、グラフの作成をご覧ください。
BigQuery BI Engine では、次の指標が提供されます。
リソース | 指標 | 詳細 |
---|---|---|
BigQuery プロジェクト | 予約合計バイト数 | 1 つの Google Cloud プロジェクトに割り当てられた合計容量 |
BigQuery プロジェクト | 予約使用バイト数 | 1 つの Google Cloud プロジェクトで使用される合計容量 |
BigQuery プロジェクト | BI Engine の上位テーブルのキャッシュに保存されたバイト数 | テーブルごとのキャッシュ使用量。この指標には、リージョン レポートごとの上位 N 個のテーブルの使用状況が表示されます。 |
BI Engine のクエリ統計情報
このセクションでは、BI Engine の使用状況のモニタリング、診断、トラブルシューティングに役立つクエリ統計情報を見つける方法について説明します。
BI Engine アクセラレーション モード
BI Engine による高速化を有効にすると、次の 4 つのモードのいずれかでクエリを実行できます。
BI_ENGINE_DISABLED |
BI Engine はアクセラレーションを無効にしました。biEngineReasons は、より詳細な理由を指定します。クエリは BigQuery 実行エンジンを使用して実行されました。 |
PARTIAL_INPUT |
クエリ入力の一部は BI Engine を使用して高速化されました。クエリの最適化と高速化で説明されているように、一般にクエリプランは複数の入力ステージに分割されます。BI Engine は、ダッシュボードで通常使用される一般的なタイプのサブクエリ パターンをサポートしています。クエリが複数の入力ステージで構成されている場合、サポートされるユースケースであるのはごく一部で、BI Engine はアクセラレーションなしで通常の BigQuery エンジンを使用してサポートされていないステージを実行します。この場合、BI Engine は PARTIAL アクセラレーション コードを返し、biEngineReasons を使用して他の入力ステージを高速化させない理由を代入します。 |
FULL_INPUT |
クエリのすべての入力ステージが BI Engine を使用して高速化されました。キャッシュに保存されたデータはクエリ間で再利用され、データの読み取り直後の計算が高速化されます。 |
FULL_QUERY |
クエリ全体が BI Engine を使用して高速化されました。 |
BigQuery API ジョブの統計情報を表示する
BI Engine に関する詳細な統計情報は、BigQuery API を使用して確認できます。
BI Engine で高速化されたクエリに関連付けられている統計情報を取得するには、次の bq コマンドライン ツール コマンドを実行します。
bq show --format=prettyjson -j job_id
プロジェクトで BI Engine アクセラレーションが有効になっている場合、出力には新しいフィールド biEngineStatistics
が生成されます。ジョブレポートの例を以下に示します。
"statistics": {
"creationTime": "1602175128902",
"endTime": "1602175130700",
"query": {
"biEngineStatistics": {
"biEngineMode": "DISABLED",
"biEngineReasons": [
{
"code": "UNSUPPORTED_SQL_TEXT",
"message": "Detected unsupported join type"
}
]
},
BiEngineStatistics
フィールドの詳細については、ジョブ参照をご覧ください。
BigQuery 情報スキーマの統計情報
BI Engine による高速化の統計情報は、bi_engine_statistics
列の INFORMATION_SCHEMA.JOBS_BY_*
ビューの一部として BigQuery INFORMATION_SCHEMA
ビューに含まれます。たとえば、このクエリは、過去 24 時間の現在のプロジェクトのすべてのジョブに関する bi_engine_statistics
を返します。
SELECT
creation_time,
job_id,
bi_engine_statistics
FROM
`region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE
creation_time >
TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
AND job_type = "QUERY"
INFORMATION_SCHEMA
ビューの project-id
、region
、views
にリージョンを指定するには、次の形式を使用します。
`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.VIEW
Looker Studio の情報スキーマの詳細を表示する
BigQuery で使用されている Looker Studio レポートとデータソースを追跡するには、INFORMATION_SCHEMA.JOBS
ビューを表示します。BigQuery のすべての Looker Studio クエリで、report_id
ラベルと datasource_id
ラベルを持つエントリが作成されます。これらの ID は、レポートまたはデータソースのページを開くときに、Looker Studio の URL の末尾に表示されます。たとえば、URL が https://lookerstudio.google.com/navigation/reporting/my-report-id-123
のレポートの場合、レポート ID は "my-report-id-123"
です。
次の例は、レポートとデータソースを表示する方法を示しています。
Looker Studio の各 BigQuery ジョブのレポートとデータソースの URL を確認する
-- Standard labels used by Looker Studio. DECLARE requestor_key STRING DEFAULT 'requestor'; DECLARE requestor_value STRING DEFAULT 'looker_studio'; CREATE TEMP FUNCTION GetLabel(labels ANY TYPE, label_key STRING) AS ( (SELECT l.value FROM UNNEST(labels) l WHERE l.key = label_key) ); CREATE TEMP FUNCTION GetDatasourceUrl(labels ANY TYPE) AS ( CONCAT("https://lookerstudio.google.com/datasources/", GetLabel(labels, 'looker_studio_datasource_id')) ); CREATE TEMP FUNCTION GetReportUrl(labels ANY TYPE) AS ( CONCAT("https://lookerstudio.google.com/reporting/", GetLabel(labels, 'looker_studio_report_id')) ); SELECT job_id, GetDatasourceUrl(labels) AS datasource_url, GetReportUrl(labels) AS report_url, FROM `region-us`.INFORMATION_SCHEMA.JOBS jobs WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY) AND GetLabel(labels, requestor_key) = requestor_value LIMIT 100;
レポートとデータソースを使用して生成されたジョブを表示する
-- Specify report and data source id, which can be found at the end of Looker Studio URLs. DECLARE user_report_id STRING DEFAULT '*report id here*'; DECLARE user_datasource_id STRING DEFAULT '*datasource id here*'; -- Looker Studio labels for BigQuery. DECLARE requestor_key STRING DEFAULT 'requestor'; DECLARE requestor_value STRING DEFAULT 'looker_studio'; DECLARE datasource_key STRING DEFAULT 'looker_studio_datasource_id'; DECLARE report_key STRING DEFAULT 'looker_studio_report_id'; CREATE TEMP FUNCTION GetLabel(labels ANY TYPE, label_key STRING) AS ( (SELECT l.value FROM UNNEST(labels) l WHERE l.key = label_key) ); SELECT creation_time, job_id, FROM `region-us`.INFORMATION_SCHEMA.JOBS jobs WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY) AND GetLabel(labels, requestor_key) = requestor_value AND GetLabel(labels, datasource_key) = user_datasource_id AND GetLabel(labels, report_key) = user_report_id ORDER BY 1 LIMIT 100;
Cloud Logging
BI Engine による高速化は、BigQuery ジョブ処理の一部です。特定のプロジェクトの BigQuery ジョブを検査するには、ペイロードが protoPayload.serviceName="bigquery.googleapis.com"
の Cloud Logging ページをご覧ください。
次のステップ
- Cloud Monitoring の詳細を確認する。
- グラフのモニタリングの詳細を確認する。
- Monitoring のアラートについて学習する。
- Cloud Logging の詳細を確認します。