レガシー SQL でのテーブル デコレータ

このドキュメントでは、レガシー SQL クエリ構文でテーブル デコレータを使用する方法について詳しく説明します。BigQuery では、標準 SQL のクエリ構文を使用してください。テーブル デコレータは現在のところ標準 SQL ではサポートされていませんが、_TABLE_SUFFIX 疑似列に対してフィルタを使用することで、テーブル デコレータのセマンティクスを標準 SQL で実現できます。詳細については、標準 SQL 移行ガイドのテーブル デコレータとワイルドカード関数をご覧ください。

通常、BigQuery はクエリの実行時に行のフルスキャンを行います。レガシー SQL でテーブル デコレータを使用すると、より効率的にデータの一部に対してクエリを実行できます。テーブル デコレータは、テーブルのコピー、テーブルのエクスポートtabledata.list によるデータの一覧取得など、テーブルを読み取るときに使用できます。

テーブル デコレータでは <time> の相対値と絶対値を使用できます。相対値は負の数値、絶対値は正の数値で指定します。たとえば、-3600000 は現在の時刻より 1 時間前をミリ秒で表しており、3600000 は 1970 年 1 月 1 日から 1 時間後をミリ秒で表しています。

スナップショット デコレータ

構文

@<time>
  • <time> の時点でのテーブルのスナップショットを参照します。時刻はエポック時間(ミリ秒)で表します。
  • <time> は過去 7 日以内で、なおかつテーブルの作成時刻以降である必要があります。
  • @0 は特殊で、テーブルで参照可能な最も古いスナップショットを参照します。つまり、7 日前かテーブルの作成時間(テーブル作成後 7 日間未満の場合)になります。

スナップショット デコレータを使用すると、テーブルの削除から 2 日以内であればテーブルの削除を取り消すことができます。

1 時間前のテーブルのスナップショットを取得するには:

相対値の例

#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000]

絶対値の例

  1. 1 時間前の <time> を取得します。

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
    
  2. 次のクエリ内の <time> を置き換えます。

    #legacySQL
    SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time]
    

範囲デコレータ

構文

@<time1>-<time2>
  • <time1> から <time2> までの間に追加されたテーブルデータを参照します。時刻はエポック時間(ミリ秒)で表します。
  • <time1><time2> は過去 7 日以内である必要があります。
  • <time2> は省略できます。省略すると、デフォルトで現在の時刻が使用されます。

相対値の例

1 時間前から 30 分前の間に追加されたテーブルデータを取得するには:

#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000--1800000]

過去 10 分間からデータを取得するには:

#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-600000-]

絶対値の例

1 時間前から 30 分前の間に追加されたテーブルデータを取得するには:

  1. 1 時間前の <time1> を取得します。

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
    
  2. 30 分前の <time2> を取得します。

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -30, 'MINUTE')/1000)
    
  3. 次のクエリ内の <time1><time2> を置き換えます。

    #legacySQL
    SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time1-time2]
    
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。