2016-08-02 23 views
1

私はパーティションタイプdayのテーブルを作成しましたが、bqコマンドラインツールからtime_partitioning_expirationを1209600秒(14日)に設定しました。設定はテーブルの上にbq showを実行して、正しいかどうかは確認していると私は削除されていることが予想パーティション内のデータがあるように思われるが、私はbigqueryのtime_partitioning_expirationパラメータはどのように機能しますか?

"timePartitioning": { 
    "expirationMs": "1209600000", 
    "type": "DAY" 
    }, 
    "type": "TABLE" 

を見ることができます。

SELECT 
    count(*) as c, 
    _partitiontime as pDate 
FROM [poc.reporting] 
group by pDate 
; 

1 373800 2016-07-17 00:00:00 UTC 
2 640800 2016-07-18 00:00:00 UTC 
3 373800 2016-07-16 00:00:00 UTC 

time_partition_expirationを設定すると、内部的に正しいパーティションが削除/削除されると私は理解していますか?もしそうなら、なぜ私の場合にパーティションが削除されていないのですか?

答えて

2

パーティションの有効期限はパーティションの日付に基づいていませんが、ストレージがテーブルに正確に追加された時間に基づいています。たとえば、パーティションの有効期限が14日の表の場合、20160730のパーティション20160717のデータが20160730に再フォーマットされた場合、そのパーティションのデータは20160730から14daysの期限が切れます。パーティション内の最も古いデータの書き込み時間は、次のクエリ:

SELECT MSEC_TO_TIMESTAMP(creation_time) from [project:dataset.table$__PARTITIONS_SUMMARY__] 
+0

ああなるほど - 感謝を。これはやや面倒ですが、私の場合、過去にパーティションにデータをロードしたいのですが、そのパーティションの日付から一定の日数(私の場合は14日)後にそのデータが存在することは望ましくありません。パーティションの有効期限に現在のタイムスタンプまたはパーティション日付を使用するためにデータをロードするときに、このオプションをbigqueryに含めるとよいでしょう。 – opensourcegeek

+1

私たちは、これに対する顧客からのフィードバックを厳密に評価し、どの動作が最も望ましいかを確認し、作成時間ではなくパーティションの日付に基づいて動作するように変更することを検討しています。このフロントの変更については、最新情報をお知らせします。 –

+0

これに関する更新情報はありますか?類似の機能が追加されていますか? – MJK

2

Pavanからトップの答えで説明した動作は、最終更新日時2016年12月13日に変更され、有効期限は、現在のパーティションの日付に基づいており、およびNOTのように見えます。最新のドキュメントから

パーティションの有効期限を60日に設定され、データが は2017年1月30日にパーティション20170101に書き込まれた場合、そのデータ は、1月1日に期限が切れます、2017 + 60日。

参考:BQ Partitioned Tables

関連する問題