2017-01-18 9 views
0

テーブルの照会には、たとえば1週間前のように、または特定の日付範囲に挿入されたデータのように、テーブルデコレータを使用することに慣れています。BigQuery、日付パーティションテーブルとデコレータ

日付パーティション表の導入により、_PARTITIONTIMEという擬似列が示されました。 「日付デコレータ」構文を使用すると、テーブルの特定のパーティションにレコードを追加できます。

擬似列_PARTITIONTIMEも、テーブルのデコレータやそのようなものをサポートするためにシーンの背後で使用されているのだろうかと思っていました。

「はい」の場合は、パーティション表の疑似列と同様にアクセス/変更できますか?

_PARTITIONTIMEまたは_INSERTIONTIMEと呼ばれていますか?もちろん、両方とも機能しませんでした。そして、もう一つの重要なステップCannot read partition information from a table that is not partitioned

:確かにテーブルがエラーを取得しますない場合は

SELECT TIMESTAMP(partition_id) 
    FROM [dataset.partitioned_table$__PARTITIONS_SUMMARY__] 

パーティションを読み出すことにより区画されている場合:)

答えて

1

まずチェック_PARTITIONTIMEの値を選択するには、エイリアスを使用する必要があります。

SELECT 
    _PARTITIONTIME AS pt, 
    field1 
FROM 
    mydataset.table1 

ただし、WHEREで使用する場合は必須ではなく、選択時のみです。

#legacySQL 
SELECT 
    field1 
FROM 
    mydataset.table1 
WHERE 
    _PARTITIONTIME > DATE_ADD(TIMESTAMP('2016-04-15'), -5, "DAY") 

あなたはいつもデコレータで1つのパーティションテーブルを参照することができます。mydataset.table$20160519

+0

ありがとうございました。パーティション化された表で_PARTITIONTIMEの主な使用方法を説明しました。私はテーブルデコレータの同等物について尋ねています。テーブルデコレータは挿入時間に基づいてレコードにアクセスすることができます。それはまた隠れた/疑似の列の周りを回っていますか?それはアクセス可能ですか?どうやって?ありがとうございます –

+0

テーブルデコレータの実装に関する詳細は記載されていませんので、この質問には答えられませんが、変更可能な列は使用されていない可能性が非常に高いです。 –

関連する問題