列形式のデータをクエリする

このページでは、列データに対してクエリを実行する方法について説明します。

列形式のデータをクエリする

@{scan_method=columnar} クエリヒントを使用すると、クエリで列形式のデータを読み取ることができます。scan_method ヒントは、ステートメント レベルまたはテーブル レベルで設定できます。

たとえば、次のクエリを使用して、Singers テーブルと Messages テーブルから列データを読み取ることができます。

  • @{scan_method=columnar} SELECT COUNT(*) FROM Singers;
  • SELECT COUNT(*) FROM Singers @{scan_method=columnar};
  • @{scan_method=columnar} SELECT m.MsgBlob FROM Messages WHERE m.id='1234';

BigQuery 連携クエリを使用して Spanner の列データをクエリする

BigQuery から Spanner の列データを読み取るには、外部データセットを作成するか、EXTERNAL_QUERY 関数を使用します。

外部データセットをクエリすると、カラム形式のデータが利用可能で、クエリに適している場合は、自動的に使用されます。

EXTERNAL_QUERY 関数を使用する場合は、ネストされた Spanner クエリに @{scan_method=columnar} ヒントを含めます。

下記の例で、

  • EXTERNAL_QUERY の最初の引数は、外部接続とデータセット my-project.us.albums を指定します。
  • 2 番目の引数は、MarketingBudget が 50 万未満の AlbumInfo テーブルから MarketingBudget を選択する SQL クエリです。
  • @{scan_method=columnar} ヒントは、カラム型スキャン用に外部クエリを最適化します。
  • 外側の SELECT ステートメントは、外部クエリから返された MarketingBudget 値の合計を計算します。
  • AS total_marketing_spend 句は、計算された合計にエイリアスを割り当てます。
SELECT SUM(MarketingBudget) AS total_marketing_spend
FROM
  EXTERNAL_QUERY(
    'my-project.us.albums',
    '@{scan_method=columnar} SELECT AlbumInfo.MarketingBudget FROM AlbumInfo WHERE AlbumInfo.MarketingBudget < 500000;');

次のステップ