
Hightouch で Tableau ワークブックのフィルタ適用時に同期対象レコードもフィルタされるか確認してみた
はじめに
リバース ETL ツールである Hightouch はソースとして Tableau ワークブックを指定できます。この際、ワークブックにフィルタが適用されている場合、同期対象となるレコードもフィルタ後のものになるのか確認したく、検証した内容を記事としました。
前提条件
ここでは以下のフィルタの有無で同期対象のレコードにもフィルタが反映された状態となるかを確認しています。
- ディメンションフィルタ
- 表計算フィルタ
Hightouch の宛先には SendGrid を使用しています。こちらの設定手順は以下の記事をご参照ください。
また、ポイントとして SendGrid との同期設定において「行が削除された場合」のオプションとして「Delete the entire user in SendGrid」としています。
結論
結論として、いずれのフィルタも適用された状態でパブリッシュされたワークブックであれば、フィルタ後のレコードが同期対象となることが確認できました。
検証内容
Tableau ワークブックの作成
宛先には SendGrid を使用するので、検証用のソースとして下図のビューを作成し、Tableau Cloud にパブリッシュしました。Tableau で抽出されたユーザーを SendGrid に Hightouch 経由でインポートするイメージです。
この時点では特にフィルタ等は設定していません。この状態で接続設定、同期を行うと下図の通り、今回設定した Hightouch のモデルの名称で Contact が作成されます。
マスクしていますが、ワークブック上に表示されていたレコード(3レコード)が同期されています。
マッピングした項目も反映されています。
Tableau と Hightouch の接続設定手順の詳細は以下をご参照ください。
ディメンションフィルタを追加
ビューを下図のように編集しフィルタを追加します。さらにフィルタを適用した状態で Tableau Cloud にパブリッシュし、更新します。
この状態で Hightouch の同期を実行します。同期設定で「Delete the entire user in SendGrid」としたので、SendGrid 側を確認するとレコードが減少しています。
中身を見ても、フィルタで抽出されたレコードが同期されていることを確認できました。
表計算フィルタを追加
計算項目(index関数)とフィルタを下図のように追加し、フィルタを適用した状態で Tableau Cloud にパブリッシュしました。
この状態で Hightouch の同期を実行し、SendGrid 側を確認します。フィルタ結果が先と同じなのでレコード数は変わりませんが、先の手順で残っていたユーザーは削除され、新たに抽出された別のユーザーが追加されていました。
同期アクティビティ
上記の結果は同期の概要ページからも確認できます。
各同期をクリックすると詳細を確認でき、最後の例であれば以下のように主キーからどのレコードが追加/削除されたかも確認できます。
さいごに
Tableau ワークブックをソースとする際に、ワークブックにフィルタが適用されている場合、同期対象となるレコードもフィルタ後のものになるのか確認してみました。
フィルタは適用された状態のレコードが同期対象となる点と、今回であれば「行が削除された場合」のオプションとして「Delete the entire user in SendGrid」と組み合わせることで、この Contact においては、同期の度に常に配信対象のみとするなど仕組も組めるかなと思いました。
こちらの内容が何かの参考になれば幸いです。