こんにちは。CCIのアナリティクス担当の寺田です。
最近、BigQuery Data Transfer Serviceが新しいデータソースに対応しました。
公式で発表された新しいデータソースは以下です。
The BigQuery Data Transfer Service can now transfer data from the following data sources:
- Facebook Ads
- Oracle
- Salesforce
- Salesforce Marketing Cloud
- ServiceNow
特にMeta(Facebook/Instagram)広告を出稿している、Salesforceを利用している方にとっては朗報ではないでしょうか?
今回は、(これから対応するデータソースがどんどん増えてほしいという期待も込めて)
の2つをざっくりご紹介したいと思います。
※具体的な転送設定の方法についてはこの記事ではご紹介しません。
知りたい場合はこちらの記事から、転送元としたいサービスを選んでご設定ください。
今回想定する簡易的なETLフローは以下の図です。
転送元 は Amazon S3に置かれたCSVデータを想定しています。
BigQuery Data Transfer Serviceが実行した転送ジョブの情報が
の順に伝播します。
Cloud FunctionsのHTTP関数の役割は
です。
BigQuery Data Transfer Serviceが転送時に教えてくれる「転送に関する情報」は具体的にどのようなものでしょうか?ざっくりいうとCloud FunctionsのHTTP関数には、JSON形式のデータ(Flaskリクエストオブジェクト)が渡されてきます。
では、実際にCloud FunctionsのHTTP関数が受け取った「転送に関する情報」見てみましょう。
{
"attributes": {
"eventType": "TRANSFER_RUN_FINISHED",
"payloadFormat": "JSON_API_V1"
},
"data": "ewogICJkYXRhU291cmNlSWQiOiA.......(続く)",
"messageId": "10594332634869765",
"publishTime": "2024-03-04T07:47:41.653Z"
}
BigQuery Data Transfer Serviceのデータ転送タスクが終了したことは、
"attributes"フィールドの中にある"eventType"フィールドでわかりそうですね!
ほかにも、転送タスク終了時間"publishTime" 、
転送に関する情報(メッセージ)に対して付与された"messageId"
も確認できます。
ただ肝心の転送が失敗したか成功したかはどこで確認できるでしょうか?
実は転送が失敗したか成功したかは"data"
という、長い&意味不明な文字列に入っています。(※実際には「.......(続く)
」の部分にはめちゃめちゃ長い文字列が入ります)
"data": "ewogICJkYXRhU291cmNlSWQiOiA.......(続く)"
"data": "ewogICJkYXRhU291cmNlSWQiOiA.......(続く)"
"data"フィールドは「Base64」という方式でエンコードされており、このままでは人間が見ても理解できません。
"data"フィールドをデコードして、もう一度「転送に関する情報」を見てみましょう。
(※一部公開NGの部分は改編してあります)
{
"attributes":{
"eventType": "TRANSFER_RUN_FINISHED",
"payloadFormat": "JSON_API_V1"
},
"data": {
"dataSourceId": "amazon_s3",
"destinationDatasetId": "test",
"emailPreferences": { "enableFailureEmail": true },
"endTime": "2024-03-04T07:47:41.527053Z",
"errorStatus": { },
"name":"projects/12345678/locations/...",
"notificationPubsubTopic": "projects/test/topics/...",
"params": {
"access_key_id": "hoge1234",
"data_path": "s3://analytics-cci/test.csv",
"destination_table_name_template": "test",
"field_delimiter": ",",
"file_format": "CSV",
"max_bad_records": "0",
"secret_access_key": "hoge1234",
"skip_leading_rows": "1",
"write_disposition": "WRITE_APPEND"
},
"runTime": "2024-03-04T07:46:26.242Z",
"scheduleTime": "2024-03-04T07:46:26.37475Z",
"startTime": "2024-03-04T07:46:27.442978Z",
"state": "SUCCEEDED",
"updateTime": "2024-03-04T07:47:41.527076Z",
"userId": "hoge1234"
},
"messageId": "10594332634869765",
"publishTime": "2024-03-04T07:47:41.653Z"
}
"data"フィールドの中にある"state"フィールドの値が「 "SUCCEEDED"」だったらBigQuery Data Transfer Serviceのデータ転送タスクは成功と判断できそうです。(実際できます)
反対に、"data"フィールドの中にある""state"フィールドの値が「"FAILED"」だったらデータ転送タスクは失敗とわかります。
よって、今回想定する簡易的なETLフロー図を完成させるには、
1) "eventType": "TRANSFER_RUN_FINISHED"
2) "state": "SUCCEEDED"
1,2がどちらもtrueの時:転送された生データを加工するクエリをBigQueryに発行する
1,2がどちらかがfalseの時:エラー情報をログ(Cloud Logging)に吐き出す
これらを満たすCloud FunctionsのHTTP関数を設定すればうまくいきそうです。
いかがだったでしょうか。今回は
を解説しました。
また、ほかのGoogle Cloudプロダクト、「Cloud Run」や「Dataflow」などを用いれば、より高度に制御されたワークフローを回すことなどもできます。
またこれらのワークフローを用いた、
など、ダッシュボード作成のご相談も承っております。
ここまで読んでいただきありがとうございました!😊
📣なお、私も含め、CCI Analyticsを担当するアナリストは現在は「Data Dig(データディグ)」というCookieに依存しないデジタルマーケティング展開の支援も行っています。そのサービスの詳細も「データマーケティング」という形でご案内しており、Data Dig関連サービスとしてどのような資料が存在するか、それらの資料ダウンロードを行えます。
また、デジタルマーケティングに関するコラムなどを展開しています。
📣CCIが提供する統合デジタルマーケティングサービスの全容、また現状のデジタルマーケティング施策のノウハウを認識されたい場合は、ぜひ近日オープンした「KnowHowNow」をご覧ください。