BI Engine をモニタリングする

BigQuery BI Engine は、Google Cloud サービスと連携して BI Engine の使用状況のモニタリングとトラブルシューティングを支援します。BigQuery BI Engine による高速化を備えた Looker Studio は、BigQuery モニタリングで完全にサポートされています。これには、INFORMATION_SCHEMA実行グラフCloud Monitoring の指標などが含まれます。

Cloud Monitoring

BigQuery BI Engine は Cloud Monitoring と統合されているため、集約された BI Engine の使用状況を集約してモニタリングし、アラートを構成できます。Monitoring を使用して BI Engine の指標のグラフを作成する方法については、Monitoring ドキュメントのグラフの作成をご覧ください。

BigQuery BI Engine では、次の指標が提供されます。

リソース 指標 詳細
BigQuery プロジェクト 予約合計バイト数 1 つの Google Cloud プロジェクトに割り当てられた合計容量
BigQuery プロジェクト 予約使用バイト数 1 つの Google Cloud プロジェクトで使用される合計容量
BigQuery プロジェクト BI Engine の上位テーブルのキャッシュに保存されたバイト数 テーブルごとのキャッシュ使用量。この指標には、リージョン レポートごとの上位 N 個のテーブルの使用状況が表示されます。

Cloud Monitoring を使用すると、BI Engine によってキャッシュに保存された Looker Studio データソースのトラフィックを表示できます。利用可能な Google Cloud のすべての指標のリストについては、Google Cloud の指標をご覧ください。

Looker Studio の BigQuery ネイティブ インテグレーションでは、モデルごとの指標は提供されません。代わりに、BigQuery API Monitoring を使用して、INFORMATION_SCHEMA テーブルのデータソース ID とレポート ID が公開されます。

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 の INFORMATION_SCHEMA の統計情報

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 BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
  AND CURRENT_TIMESTAMP()
  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 in the end of Looker Studio URLs.
DECLARE user_report_id STRING DEFAULT '*report id here*';
DECLARE user_datasource_id STRING DEFAULT '*datasource id here*';

-- Standard labels Looker Studio uses in native integration.
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 に関するログ情報は、Google Cloud コンソールの [Cloud Logging] ページで確認できます。BI Engine のログ情報を表示する方法は、データをクエリするツールによって異なります。

  • Looker Studio のネイティブ インテグレーションが有効になっていない Looker Studio クエリの場合: [Cloud Logging] ページで、protoPayload.serviceName="bigquerybiengine.googleapis.com" のペイロードを使用してログ情報を表示できます。
  • 他のすべてのトラフィックの場合: [Cloud Logging] ページで、protoPayload.serviceName="bigquery.googleapis.com" のペイロードを使用してログ情報を表示できます。

次のステップ