Adobe Campaign Classic クエリアクティビティ基本手順

#はじめに

Adobe Campaign Classicで、既にワークフローを作成している皆さん、
これからワークフローを作成する予定の皆さん、
今回はワークフローを作成する際に、よくメイン処理として使われる
「クエリ」アクティビティについて、TIPS含めて設定方法をご紹介します！

機能詳細や仕様は以下の製品ドキュメントを参考にしてください。
<a href="https://experienceleague.adobe.com/docs/campaign-classic/using/automating-with-workflows/targeting-activities/query.html?lang=ja-JP#creating-a-query" rel="nofollow noopener" target="_blank">Adobe Campaignの製品ドキュメントはこちら</a></p>

本手順は以下の環境を前提としたものになっております。
・Adobe Campaignバージョン情報：9032(日本語環境)
・対象環境：Managed/Hybrid/On-Premise

#ディメンションとは
これからご紹介する「クエリ」アクティビティでは、
処理対象にするテーブルを**ディメンション**と表現しております。
テーブルには、"製品標準"と導入企業様のご要件を満たすために"カスタイズ"で
用意された2種類が存在しますが、これらは全て**ディメンション**に該当します。
![dimension.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/31098d7d-8dbb-4508-cb4b-c2f30b0b1f7a.jpeg)
クエリアクティビティでは、必ず2種類（ターゲティング、フィルタリング）の
**ディメンション**を指定する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/2e6637f7-bb8a-4304-8f56-376d3a7bcf07.png)
・**ターゲティングディメンション**は製品標準では”受信者”テーブルが自動指定されています。
・**フィルタリングディメンション**は、**ターゲティングディメンション**と関連がある
　(紐付け情報がある)テーブルのみを指定できます。
・**ターゲティングディメンション**と**フィルタリングディメンション**は、
　同一テーブルを指定することも可能です。

以下に、**ターゲティングディメンション**と**フィルタリングディメンション**の指定内容から、
どのようなSQLが生成されるのかイメージを掲載します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/f4d99bbc-ba3b-5763-5c31-e53dc4a8a301.png)
SELECTされた抽出結果は、自動的に一時テーブルとしてDBに出力されます。
その際の抽出対象項目(SELECT項目)は、上記の例ですと"受信者id"になります。
抽出対象項目(SELECT項目)は明示的に指定することで、追加することが可能です。
詳しくは後述致します。

#クエリアクティビティ設定手順
①ワークフロー作成画面にて、画面左側のアクティビティパレットから
　「クエリ」アクティビティを選択し、ダイアグラム上にドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/493533e6-c4c6-5ffa-ad79-246667897123.png)

②ダイアグラム上の「クエリ」アクティビティをダブルクリックし、
　設定画面を表示後、「クエリを編集」リンクをクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/793326a9-c9d2-7b2e-a818-4539e7843447.png)

③ターゲティング及びフィルタリングディメンションを選択する画面にて、
　それぞれ適切なディメンションを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/83bd6274-c947-542c-4b63-530031b83034.png)

④フィルタリングディメンションは、ターゲティングディメンションに
　関連がある(紐付き情報がある)テーブルのみが選択可能となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/c2e64022-c9c8-b94f-d5d6-06fa03568315.png)

⑤今回の手順では、ターゲティングディメンションに"受信者"、
　フィルタリングディメンジョンに"受信者配信ログ"を指定します。
　指定後、"フィルター条件"を選択した状態で、[次へ]ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/955203c0-353e-5840-a470-49b689655e56.png)

⑥Where条件となるフィルターを指定します。
　既に条件指定用の空設定が存在するため、式のフィールドをクリックします。
　※更に条件を追加したい場合は、[追加]アイコンをクリックすることで空設定を追加後、
　　適切な条件を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/f81e37a5-de17-4ef1-6bb0-557eb741e623.png)

⑦条件を指定可能なテーブルと項目が一覧表示されますので、適切な項目を指定します。
　※テーブルや項目の物理名、外部キー等の付加情報を表示したい場合、
　　画面右下にある青枠のアイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/9cbe8f7a-5679-15bb-629f-7fe1d83926ef.png)

⑧項目指定後、演算子と値を設定します。
　値については、項目のデータタイプ(文字/数値/日付)によって入力情報が異なります。
　入力方法についての違いは以下になります。

　・**文字タイプ**
　　演算子は完全一致("次と等しい")以外にも、
　　LIKE検索("次を含む"、"次で始まる"等)が可能です。
　　LIKE検索のため、大量データへの検索時は性能面にご注意願います。
　　値の指定においては、シングルクォーテーションやダブルクォーテーションで
　　囲む必要はありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/c56b502e-bb70-fb77-dddc-0ea8beb3ead0.png)

　・**数値タイプ**
　　演算子は完全一致("次と等しい")以外にも、
　　大小などの数量比較条件("より大きい"、"次よりも大きいか等しい"等)が可能です。
　　値の指定においては、シングルクォーテーションやダブルクォーテーションで
　　囲む必要はありません。自動的に3桁毎にカンマが設定されます。
　　※倍数精度の属性であれば、自動的に小数第2位まで自動的に設定されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/f6e5de07-846f-6760-667f-022929f315bd.png)

　・**プルダウン(列挙)タイプ**
　　性別や都道府県、ステータス値など予め入力可能な値が決まっている場合、
　　プルダウン(列挙)による選択式入力が可能な項目があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/66241c1e-290b-5a2f-15bb-ac1e9f6301e1.png)

　・**日付タイプ**
　　演算子は完全一致("次と等しい")以外にも、
　　過去・未来などの比較条件("前"、"以前"等)が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/d8ce567f-77f8-ade9-ca13-71140c1d37c2.png)
　　[式を編集]アイコンをクリックすると、以下のような現在日付からN日前などの
　　相対的な比較条件を指定できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/ec46acbe-c59e-c36b-a33e-b05cc0d1b654.png)
　　[プルダウン]アイコンをクリックすると、カレンダーが表示されますので、
　　任意の日付を絶対日付として指定することが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/7509743c-42ad-8adf-8b34-a6402c38054e.png)

##TIPS①
[値の配分]アイコンをクリックすると、下記のような項目値毎のカウント値を参照できます。
この画面にて項目を選択すると、自動的に値にフィールドにマッピングされます。
※リアルタイム集計になりますので、大量データに対する処理時は、性能面にご注意願います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/891c3247-f1ee-a827-c243-6cba62400ce7.png)

⑨複数の条件を指定する際には、下記のように「および(AND)」/または(OR)/例外(NOT AND)の
　適切な接続詞を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/38b1b051-aa44-b675-6305-95c534d90ac2.png)

　また、複雑な接続詞の組み合わせが必要なケースも「括弧のレベル」を変更できますので、
　下記のように、条件の優先度を意識した設定が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/96c39923-e5b5-7ec9-63df-91eaee42bc14.png)

⑩複雑な条件を指定した場合、SQLを確認することで検証に役立つ場合がございます。
　条件設定後に、「生成されるSQLクエリ」リンクをクリックすることで、
　下記のように、生成されるSQLを表示することが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/622277d8-8cc1-6e5e-c595-424884f646bc.png)

##TIPS②
画面下部の[プレビュー]タブをクリックすることで、
設定した条件にヒットするデータを確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/449b526e-cc82-2bd6-c5cb-6a7b744ce3ac.png)

⑪クエリ編集が完了すると、下記の画面にて設定した条件が表示されます。
　抽出対象項目(SELECT項目)を追加したい場合は、「データを追加」リンクをクリックします。
　※「データを追加」リンクで追加項目を指定しない場合は、
　　結果として、ターゲティングディメンションのプライマリキー項目のみが
　　一時テーブルに出力されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/e1f55d2d-fd3e-b23e-bca2-fe92c91d2d8a.png)
⑫追加するデータのタイプを選択時は、「フィルタリングディメンションにリンクされたデータ」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/999be64c-6db2-769d-3b7b-7b31de4ef759.png)
⑬基本的なアプローチとしては「フィルタリングディメンションのデータ」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/00fe7ca8-f36d-9532-8135-09c0f7bdf031.png)
⑭出力したい項目を画面左側のテーブルと項目一覧から選択します。
　出力列として選択された項目は、画面右側に表示されます
　※テーブルや項目の物理名、外部キー等の付加情報を表示したい場合、
　　画面下にある青枠のアイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/7f22eb45-aee9-60b6-a52a-a503a9170bc2.png)
⑮抽出条件と抽出対象項目(SELECT項目)の設定完了後、[OKボタン]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/a69642fa-44b5-2e15-cdcb-f47e76e1b9a2.png)

#クエリアクティビティ実行
①クエリアクティビティの後続アクティビティが存在しないコンディションで
　ワークフローを実行すると、下記のようにクエリアクティビティのトランジション上に、
　実行結果(11件を抽出)が表示され、かつワークフローが一時停止のステータスになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/9881578d-2fca-195a-39a9-1f59c263a558.png)
②実行結果が表示されたトランジションをクリック後、右クリックメニューで
　「ターゲットを表示」を選択すると、抽出された結果を確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/23780fbe-4c12-f6e2-66e3-7942acd7fd4e.png)
③抽出結果には、以下の3点が表示されることを確認できます。
　・ターゲティングディメンションのプライマリキー項目(受信者の外部キー)
　・追加データとして指定した項目(ステータス、ラベル)
　・ターゲティングディメンション情報
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/5c563acc-c14a-a8db-e53e-7dc4cfaf7608.png)
④なお、クエリアクティビティを選択後、右クリックメニューで[ログを表示]を選択すると、
　処理のログ内容を確認することが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/d7e90f94-153b-1aef-2b24-5bff28b35178.png)
⑤ログ内容は出力日時と処理メッセージを確認することができます。
　※エラーが発生した際、ログ内容を確認することで設定を見直すヒントになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/aced207e-a8d0-335e-f0dc-e7bc7063559b.png)

##TIPS③
ログに「実行されたSQL内容」を出力する方法をご紹介します。
<font color="red">※ただし、この設定はワークフローの設定検証時のみに有効化し、
　検証完了後の本番運用時は無効化いただくことを強く推奨します。 </font>
ワークフローの[プロパティ]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/cd3b85a7-745b-5780-9e1a-43f594e20f44.png)
プロパティ画面にて、[実行]タブの"SQLクエリをログに記録"の項目にチェックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/6f5754d4-a2e0-9b14-db70-64d7f15639a6.png)
その後、ワークフローを実行すると、ログに実行されたSQL内容が出力されます。
※複数行に渡って順不同でSQLが表示されますので、テキストエディタにコピー＆ペースト後に
　整形いただく必要がある可能性があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1084120/780f889b-ed60-a6a6-2574-4518b3cb6af9.png)

#おわりに
私たちのチームでは技術のエキスパートを随時募集しています。
カスタマーサクセス部門の紹介や職種のご紹介をしていますので、下記のページもぜひご覧ください。
https://blogs.adobe.com/japan/talent-interview-01/