2017-01-12 5 views
0

ストリーミングでWindowed PCollectionが与えられたら、ウィンドウに基づいてBQテーブルの特定のパーティションに書きたいと思います。ウィンドウのない無制限のPCollectionを特定のBQパーティションに書き込むことはできますか?

tableSpecFunctionBigQueryIO.Write.Bound.to(SerializableFunction<BoundedWindow,String> tableSpecFunction)(docs)に指定すると、テーブル参照文字列の英数字名しか指定できないようです。

テーブルデコレータが指定されていないと、データはパーティションID:__UNPARTITIONED__に書き込まれたようです。 AFAICTこれは最終的にtoday's partitionに解決されます。

私の場合、正しいパーティションですぐにデータにアクセスできるようにしたいと考えています。さらに、後半のデータを考慮して正しいパーティションに書き込むこともできることは素晴らしいことです。

だから私の質問を言い換えるする:

、それは特定のBQパーティションにウィンドウ無制限PCollectionを書くことは可能ですか?

答えて

2

パーティション名は直接使用することができます。 BigQuery API(ストリーミング)では、テーブルのパーティションデコレータを使用して、テーブルの特定のパーティションに書き込むことができます。たとえば、テーブルTの2016-05-01のパーティションに書き込む場合は、T $ 20160501を使用します。

<table_name>$<date>の構文は機能しませんか?

+0

おっと。 テスト実行時にログに表示されていたため、私はスローされました: "テーブルIDは英数字(プラス記号)で、長さは最大1024文字でなければなりません。 しかし、私はテストデータセットを適切にクリアしていないようですので、非パーティションテーブルのパーティションをアドレス指定する必要があります。 クリーンなデータセットでもう一度試してみましたが、うまくいきました。 PEBKAC – Thang

関連する問題