DataprepでJobをスケジュール実行する

こんにちは。香田です。

GCPで提供されているCloud Dataprepを利用して、
GCSのデータをBigQueryにロードするJobのスケジュール実行について解説していきます。

今回は下記のようにGCSバケットの日時フォルダに保存されるデータに対して、
毎日指定した時間にスケジュール実行していきます。

gs://<bucket-name>/dataprep/mock-data
└── 2020
    └── 04
        ├── 01
        │   ├── aaa.csv
        │   └── bbb.csv
        ├── 02
        │   ├── aaa.csv
        │   ├── bbb.csv
        │   └── ccc.csv
        └── 03
            └── bbb.csv

Dataprepとは

まずはDataprepについて簡単に解説しておきます。

Dataprepはノンプログラミングでデータの変換、加工処理をブラウザ上で確認しながら設定でき、
例えばGCSのデータを変換、加工してBigQueryにロードするといったデータパイプラインも簡単に作成できるサービスです。

Dataprepは内部的にDataflowを使用してJobが実行されます。

Dataprepでデータパイプラインを作成

今回スケジュール実行に関する解説を目的としている為、変換、加工処理はスキップしてます。
GCSからBigQueryにロードするデータパイプラインのみとなります。

1. 利用するGCSのデータについて

今回サンプルとして利用するデータは下記のようなフォルダ構成でGCSに保存され

gcs1

CSVファイルは下記のような内容となります。

user_id,item_name,item_category,price,action_category,created_at
UID20,マグカップ,zakka,1500,purchase,2020-04-02 18:08:36
UID68,マグカップ,zakka,600,purchase,2020-04-02 04:44:35
UID7,シナモン,food,600,purchase,2020-04-02 15:08:45
UID90,クッキー,food,500,favorite,2020-04-02 14:27:19
UID87,シナモン,food,500,review,2020-04-02 00:46:50

2. データセットの作成

GCSバケットのデータをデータセットとして登録します。

[Library]より[Import Data]を選択します。

dataprep1

[GCS]の対象バケットのフォルダより[Parameterized]を選択します。

dataprep2

[Add Datetime Parameter]より[Datetime Parameter]に[YYYY/MM/DD/]を設定します。
[Date range]に[Date is last]と[1 days]を設定し[Save]を選択します。

上記設定により前日のフォルダ名が実行対象となります。

dataprep3

[Add Pattern Parameter]より[Parameter]は[Wildcard.*]のままにして[Save]を選択します。

dataprep4

パターンにマッチすると対象のファイルが下記のように表示されます。
問題なければ[Create]を選択し、[Import]します。

dataprep5
dataprep6

3. フローを作成する

[Flows]より[Create Flow]を選択し[Flow Name]を入力します。

dataprep7

[Add Datasets]より作成したDatasetsを選択し[Add]を選択します。

dataprep8

[Add new Recipe]を選択しRecipeを追加します。

dataprep9

4. スケジュール設定する

次に[Schedule Flow]より毎日指定した時間に実行されるようスケジュール設定します。

dataprep10
dataprep11

5. ロード先のBigQueryを設定する

作成したRecipeの[Create Output to Run]より[Scheduled Destinations]にて
[Add]を選択します。

dataprep12

[Add Publishing Action]より[BigQuery]のデータセットを選択し[Create a new table]より[Add]を選択後、[Save settings]を選択します。

dataprep13
dataprep14

6. Jobのスケジュール実行の確認

スケジュールした時間になると該当のJobが実行されます。
[Jobs]の[Running]より確認できます。

dataprep15

Jobの[Status]が[Completed]になっていると成功です。
下記のようにBigQueryにデータがロードされていることが確認できます。

bigquery1

さいごに

Dataprepを利用してスケジュール実行方法を簡単に紹介してきましたが如何でしたでしょうか。

GCSのデータセットに対して設定可能なParameter機能ですが、日付形式でフォルダに保存するのはよくあるパターンなので、かゆいとこに手が届く便利な機能だなと思います。

Dataprepはブラウザ上でインタラクティブにデータを検出、クレンジング、変換する機能が充実しているので、データ準備作業でも便利なサービスです。

Job実行しない限り料金も発生しないので是非触ってみてください!

SNSでもご購読できます。