9

時間分割テーブルの新しい BigQuery 機能を利用したかったのですが、Dataflow SDK の 1.6 バージョンで現在これが可能かどうかはわかりません。

BigQuery JSON APIを見ると、日分割テーブルを作成するには、

"timePartitioning": { "type": "DAY" }

オプションですが、com.google.cloud.dataflow.sdk.io.BigQueryIO インターフェースでは TableReference のみを指定できます。

テーブルを事前に作成し、BigQueryIO.Write.toTableReference ラムダを介してパーティション デコレータを忍び込ませることができるのではないかと考えました。Dataflow を介してパーティション分割されたテーブルの作成/書き込みに成功した人はいますか?

これは、現在利用できないテーブルの有効期限の設定と同様の問題のようです。

4

6 に答える 6

8

Pavan が言うように、Dataflow を使用してパーティション テーブルに書き込むことは間違いなく可能です。DataflowPipelineRunnerストリーミング モードまたはバッチ モードで動作していますか?

あなたが提案した解決策はうまくいくはずです。具体的には、日付パーティショニングが設定されたテーブルを事前に作成すると、BigQueryIO.Write.toTableReferenceラムダを使用して日付パーティションに書き込むことができます。例えば:

/**
 * A Joda-time formatter that prints a date in format like {@code "20160101"}.
 * Threadsafe.
 */
private static final DateTimeFormatter FORMATTER =
    DateTimeFormat.forPattern("yyyyMMdd").withZone(DateTimeZone.UTC);

// This code generates a valid BigQuery partition name:
Instant instant = Instant.now(); // any Joda instant in a reasonable time range
String baseTableName = "project:dataset.table"; // a valid BigQuery table name
String partitionName =
    String.format("%s$%s", baseTableName, FORMATTER.print(instant));
于 2016-07-01T04:43:30.777 に答える
3

ストリーミングを使用していないときは、パーティション デコレータを使用できるはずです。ストリーミングによるパーティション デコレータのサポートに積極的に取り組んでいます。現在、非ストリーミング モードでエラーが発生している場合はお知らせください。

于 2016-06-30T14:12:04.447 に答える