2024年7月29日

【Google Cloud】Application IntegrationでBigQueryの顧客リストから誕生日にメールを自動送信


Content
こんにちは。Google Cloud研究開発チームです。

今回は、Google CloudのiPaaSサービスである Application IntegrationをセットアップからIntegrationの実行まで試してみました。

Application Integrationとは

Application Integrationは、2023年7月にリリースされたGoogle Cloud 上で動作するiPaaS(Integration Platform as a Service)ソリューションです。

データ連携のワークフローを作成する場合など、従来はプログラムを記述する必要がありましたが、GUI上でドラック&ドロップなどのマウス操作で簡単に作成することができます。

やりたいこと

  • 毎日10時に誕生日の方に誕生日おめでとうメールを送る
  • 本記事では6/25・26が誕生日の方にメールを送ります

 

完成イメージはこちらです。

メイン統合

毎日10時にスケジュール起動して、送信対象の顧客情報を取得します。

 

サブ統合

メイン統合のFor Each Loopから呼び出し、メールを送ります。

事前準備

今回利用するサービスはこちらです。

  • BigQuery
  • Application Integration

※本記事は、Google CloudプロジェクトやGoogleアカウントがあることを前提として進めていきます。

 

BigQueryで顧客リストを準備

テーブル名は「customer」としました。

name、email はSTRING型、birthdayはDATE型にしてデータをいくつかINSERTしておきます。

 

サービスアカウント

Application Integrationで利用するサービスアカウントを作成し、適切な権限を付与します。

今回は以下の権限を追加します。

  • Application Integrationの起動元
  • BigQueryジョブユーザー
  • BigQuery読み取りセッションユーザー

Application Integrationで統合フロー作成

Application Integrationで統合フローを作っていきます。

 

サブ統合を作成する

まずはサブ統合から作っていきます。

サブ統合では以下の設定を行います。

  • メールの本文に1人ずつ名前を入れるためのデータマッピング
  • メールを1人ずつ送信する設定

 

Google CloudコンソールでApplication Integration のサービス画面を開きます。
(日本語では「アプリケーションの統合」と表示されています。)

 

「+CREATE INTEGRATION」を押下すると以下の画面が表示されるので、統合の名前、リージョンを設定します。

次にトリガーとタスクを配置します。

  • TRIGGERSからAPIトリガーをドラッグ&ドロップして作成します。名前はBirthday_Message_Sender_Triggerにしました。
  • TASKSからData MappingタスクとSend Emailタスクをドラッグ&ドロップして作成します。
  • APIトリガーとDataMapping、DataMappingとSendEmailをドラッグ&ドロップして接続します。

 

Data Mappingタスクで変数を作成する

OPEN DATA MAPPING EDITORをクリックすると、Data Mapping Task Editorが開きます。

 

メイン統合から値を取得するために変数birthday_userを用意します。

「+CREATE」をクリックすると、Create Variableが開くので以下のように設定します。

Input

画面左側の変数から、 birthday_userをInputにドラッグします。
次に、「+」を押下してプルダウンからGET_PROPERTY関数を選択します。

GET_PROPERTY関数の引数には、emailとnameを設定します。

「Variable or Value」を押下すると以下のようなパネルが表示されるので、Valueを選択して取得したいプロパティ名を入力して「SAVE」を押下します。

同じようにnameも作成します。

 

Output

次は、取り出した値を入れる変数を作成します。

Outputの「create a new one」を押下し、変数名やデータ型を設定します。
「CREATE」を押下して完了です。

 

Send Emailタスクでバースデーメールを作成する

Send Emailをクリックし、以下のように設定します。

  • Subjectは必須項目です。未入力の場合はメールが送信されません。
  • $customer$ のように書くことで作成した変数の値を使用できます。

 

これでサブ統合は完成です。

ここでメイン統合から呼び出すためにAPIトリガーのIDを確認しておきます。

サブ統合をメイン統合から呼び出すために、忘れずpublishしておきましょう。

 

 

メイン統合を作成する

サブ統合とは別に新しく統合を作成します。

 

Schedulerトリガーでメール送信時間を設定する

まずはSchedulerトリガーを設定します。

起動時間は「All time settings are GMT 08:00 – America/Los Angeles」を考慮する必要があます。

今回は日本時間(UTC+9)で午前10時にメールを送りたいので、ロサンゼルス時間(UTC-7)の18:00に設定します。

(6月のため、ロサンゼルスはサマータイムでUTC-7となります。)

 

BigQueryコネクタを配置してBigQueryとの接続を作成

次は、BigQueryコネクタを作成します。

Application Integrationの「コネクタ」は、特定のデータソースへの接続を提供してくれます。

今回はBigQueryに接続するため、BigQueryコネクタを使用します。

 

TASKSのリストからConnectorsを選択します。

 

LabelはBigQueryにしました。

 

CONFIGURE CONNECTORを押下し、接続を構成します。

Select connectionの接続で、「接続を作成」を押下します。

 

続いて画面右側に表示されるCreate Connectionで、以下の項目(画像赤枠内)を設定します。

 

ほかの項目はデフォルトのまま画面に従い「次へ」、「CREATE」を押下し、2~3分待つと接続が作成されます。

 

タイプはEntitiesを選択し、次へを押下します。

 

エンティティはcustomer、オペレーションはListを選択します。

「次へ」、「完了」を押下します。

コネクタが作成されるとBigQueryの変数が表示されます。

変数filterClauseには以下のように入力して、当日誕生日の人だけを取り出します。

なお、current_time()はUTC+0の時刻が使用されます。

参照:フィルタ句の構文と例 | コネクタタスク | Google Cloud

 

For Each Loopでサブ統合を繰り返し実行する

For Each Loopタスクを配置したら、中身をこのように設定します。

  • Array selectionのList to iterateにconnectorOutputPayload()を設定します。

これでBigQueryで取得した誕生日の方のリストを呼び出します。

  • Sub-integration detailsにサブ統合のトリガー名を設定します。

ループ実行したいサブ統合のAPIトリガーIDと、統合の名前を入力します。

  • On each executionのIteration element sub-integration mappingにサブ統合で設定した変数「birthday_user」を入力します。

メイン統合とサブ統合で変数は共有されないので、ここで変数をマッピングします。

 

これでメイン統合も完成です。

実行確認

作成した統合を動かしてみます。

 

テスト実行で動作確認

 

画面右上の ▶︎TEST をクリックすると以下の画面が出てくるので、TEST INTEGRATIONを押下します。

 

成功するとこのような表示が出ます。

 

誕生日が6/25のオラフさん、アンディさんにメールが届きました。

 

メイン統合のログをみると、BigQueryとFor Each Loopそれぞれのタスクが実行されたことが分かります。

 

サブ統合のログでは、For Each Loopによって統合が2回実行されたことが分かります。

 

 

本番実行確認

「PUBLISH」を押下して統合フローを公開すると、その時点の統合バージョンがデプロイされ、アクティブ状態になります。

ログには「On hold」ステータスのエントリが表示されます 。

 

設定した10時になると、6/26が誕生日のベルさん、コンラッドさん、ハリエットさんにメールが届きました。

 

ログは「Succeeded」ステータスに変わり、次回のエントリが作成されます。

おわりに

今回は、Application Integrationを使ってみました。

使い方を理解するまでに時間が掛かりましたが、ほとんどコードを書くことなくGUIでワークフローを作成できるのは大きな魅力だと感じました。

興味がある方は一度試してみてください。ここまで一読いただきありがとうございました。

2024年7月29日 【Google Cloud】Application IntegrationでBigQueryの顧客リストから誕生日にメールを自動送信

Category Google Cloud

ご意見・ご相談・料金のお見積もりなど、
お気軽にお問い合わせください。

お問い合わせはこちら