BI Engine のモニタリング

BigQuery BI Engine は、メモリキャッシュと高速な実行を使用して、BI シナリオ向けの BigQuery を高速化します。高速化の詳細は、INFORMATION_SCHEMACloud 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-idregionviewsリージョンを指定するには、次の形式を使用します。

`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 ページをご覧ください。

次のステップ