GCS には、同じスキーマを共有するがタイムスタンプが異なるいくつかの csv ファイルがあります。たとえば、次のようになります。
- data_20180103.csv
- data_20180104.csv
- data_20180105.csv
それらを dataprep で実行し、対応する名前で Bigquery テーブルを作成したいと考えています。このジョブは、スケジューラーを使用して毎日実行する必要があります。
今のところ、うまくいくと思うのは次のとおりです。
- csv ファイルには、同じファイル内のすべての行で同じタイムスタンプ列が必要です。
- GCS に raw、queue、wrangled の 3 つのフォルダを作成する
- 生の csv ファイルを raw フォルダーに入れます。次に、クラウド関数が実行され、1 つのファイルが空の場合は raw フォルダーからキュー フォルダーに移動されます。それ以外の場合は何もしません。
- Dataprep は、スケジューラに従ってキュー フォルダをスキャンします。csv ファイル (例: data_20180103.csv) が見つかった場合、対応するジョブが実行され、出力ファイルはラングリングされたフォルダー (例: data.csv) に配置されます。
- ラングリングされたフォルダーに新しいファイルが追加されるたびに、別のクラウド機能が実行されます。これにより、csv ファイルのタイムスタンプ列に基づいた名前の新しい BigQuery テーブルが作成されます (例: 20180103)。また、キューとラングリングされたフォルダー内のすべてのファイルを削除し、未加工のフォルダーから 1 つのファイルがあればキュー フォルダーに移動します。
すべてのテーブルが作成されるまで繰り返します。これは私には非常に複雑に思えます。クラウド機能が機能しない場合の処理方法がわかりません。
私のユースケースに対する他の提案は大歓迎です。