概要
Pendoがより多くのエンタープライズアプリケーションに導入されるにつれ、そのセグメントの顧客基盤は、BIレポート環境に特定のPendoデータを取り込み、そうすることによってPendoデータを単独で可視化したり、自社のデータウェアハウス/データレイクやBIツールを使ってSalesforceやMarketoなどの他のデータソースと結合したいと考えていることがわかりました。
材料(必要なもの)
このレシピでは、目的を達成するために以下のアプリケーションを使用しました。
-
Postmanを使用したPendoAPI(RESTful APIクライアント)- 抽出、変換、読み込みを行うデータの絞り込みに使用します
注:ご購入が必要です。Pendo APIパッケージはデフォルトでは有効になっておらず、ご購入いただく必要があります。アクセスするには、Pendoの担当者にご相談ください。 - Xplenty - 抽出、変換、読み込み(ETL)ツールとして使用します
- Google BigQuery - データウェアハウスとして使用します
作成方法
説明が終わる頃には、お客様はPendo APIを使ってPendoからデータを取り込み、BigQueryデータウェアハウスに読み込み、Lookerを介して視覚化できるようになります。
パート1. Pendo API
Pendo Aggregationエンドポイントを使用して、データリポジトリに読み込む必要のあるデータを取り込みます。
ステップ1. 以下の情報を使用して、最初のAggregation APIコールを構築します。
Type = Post URL = https://app.pendo.io/api/v1/aggregation
Headers: X-Pendo-Integration-Key = your Pendo Integration API Key
Content-Type = application/json

リクエスト本文:ここで探索しようとしているデータを取り込む集計リクエストの本文を追加します。こちらのETL APIコールのサンプルを参考にしてください。

ステップ2. ETLプロセスとBIツールで使用する正確なデータを取得する必要があるため、APIコールを実行して調整します。
ETL APIコールのサンプルを参考に、適切なコールを見つけてください。
パート2. Xplenty - ソースデータをPendoとして設定する
このパートでは、前のパートで作成したAPIを使用して、データウェアハウスへのPendoデータの抽出、変換、読み込み(ETL)を行います。開始するには、Xplentyにログインし、[新規パッケージ(New Package)]をクリックして、ソースデータとしてPendoを指定します。

ステップ1. 開始するには、ログインして[新規パッケージ(New Package)]を作成してください。
- パッケージに名前をつけます
- [タイプ(Type)]は[データフロー(Dataflow)]のままにします
- [テンプレート(Template)]は空欄のままにします
- [パッケージを作成(Create Package)]をクリックします。

ステップ2. コンポーネントを追加します
[コンポーネントを追加(Add component)]をクリックします。

ステップ3. ソースの宛先を選択します
[ソース(Sources)]の下の [API - Rest API]を選択します

ステップ4. ソースAPIコールを作成します
APIコンポーネントに意味のある名前を付けます。
[認証(Authentication)]セクションで、
- 認証タイプは「なし(none)」のままにしておきます。
[リクエストと応答(Request & Response)]セクションで、
- GETの横にあるドロップ矢印をクリックして、[POST]を選択します
- RESTful APIクライアントからAPI URLをコピーし、[POST]の隣にあるURLフィールドに貼り付けます
- RESTful APIクライアントのヘッダーからキーの名前と値をコピーし、ヘッダーの下にキーと値として貼り付けます
- RESTful APIクライアントからリクエストの本文をコピーして、[本文(Body)]フィールドに貼り付けます

[応答(Response)]セクションで、
- [応答タイプ(Response type)]タイプをJSONに設定したままにします
- ベースレコードのJSONPath式フィールドに
$.results[*]
と入力します - [次へ(Next)]をクリックします

応答スキーマの場合:
- レンダリングしたら、[使用可能なフィールド(Available Fields)]で[すべて選択(Select all)]をクリックして、[選択したフィールド(Selected Fields)]にすべての列を追加します

- [選択したフィールド(Selected Fields)]へのフィールドを追加が完了したら、[保存(Save)]をクリックします。これにより、API構築インターフェースが終了します。
完成したコンポーネントは次のようになります。

パート2. Xplenty - 送信先をGoogle BigQueryに設定する
ステップ1. [コンポーネントを追加(Add component)]ボタンをクリックし、[宛先(Destinations)]で[Google BigQuery]を選択します。

ステップ2. BigQuery内で対象となる接続を選択し、[次へ(Next)]を選択します。

ステップ3. 宛先プロパティを追加します
- このコンポーネントの名前を入力します
- 対象となる接続を選択します
- [次へ(Next)]をクリックします

ステップ4. 宛先プロパティを追加します
- 作成したい宛先テーブルの名前を入力します
- チェックボックスを設定します
- データのニーズを満たすオペレーションタイプ
- 下にスクロールして[次へ(Next)]をクリックします

ステップ5. 入力内容を宛先テーブルの列にマッピングします
[自動入力(Auto-fill)]ボタンをクリックして入力フィールドを宛先列と一致させ、保存します。

ステップ6. ジョブを保存して実行します
[ジョブを保存して実行(Save & Run job)]ボタンをクリックして、作成したものが正常に実行されるかどうかを確認します。
ステップ7. ジョブを実行するクラスターを選択し、[次へ(Next)]をクリックします。

ステップ8. 作成したパッケージを選択し、[次へ(Next)]をクリックします

ステップ9. このケースでは、定義するユーザー変数やシステム変数がないため、パッケージング変数の編集ステップをスキップし、[ジョブの実行(Run job)]をクリックします。

インターフェースの上部中央に、ジョブが実行されているクラスターを参照するジョブ番号を示す確認メッセージが表示されます。

ステータスをリアルタイムで確認できます。

ジョブが完了すると、[100%完了(100% Completed)]のステータスが表示されます。[100%実行中(100% Running)]のステータスが表示されている場合は、まだジョブの仕上げ中です。

パート3. Google BigQuery
ステップ1. BigQueryを開き、テーブルを選択してデータを検証します

ステップ2. テーブルを検証します
すべてが計画どおりに進んでいれば、Xplentyの列に定義したものと一致するスキーマ情報が表示されるはずです。
[クエリテーブル(Query Table)]をクリックします。次に、上部のパネルでクエリを編集してSELECT * FROM…
を読み取り、[クエリの実行(Run Query)]をクリックします。
ポップアップが表示されます。[テーブルのプレビューに移動(Go To Table Preview)]を選択します。

- テーブル名の下のパネルに、読み込んだデータのプレビューが表示されます。
- 表示されているものが期待どおりのものかどうかを確認します。
- 期待どおりの結果が得られなかった場合は、APIコールから順にステップをさかのぼり、必要なデータが得られるまで調整します
次のステップ
Google BigQueryなどのデータリポジトリにPendoサブスクリプションからのデータが取り込まれたので、次はBIビジュアライゼーションツールの管理者と協力して、このデータをその環境に組み込みます。BIビジュアライゼーション環境に追加されると、他のデータと結合して、興味深いトレンドや価値あるインサイトなどを特定し、ビジネスの加速と成長に役立てることができます。
Xplentyデータ変換の詳細
Xplenty変換コンポーネント
変換コンポーネントをパッケージに追加する必要があります。[+コンポーネントを追加(+ Add component)]ボタンをクリックして、変換コンポーネントを選択します。
この例では、シンプルな[選択(Select)]変換コンポーネントを使用しています。

これをパッケージに追加し、アップストリームでソースに接続し、ダウンストリームで宛先データベースに接続して、使用可能なフィールドを更新します。
Xplenty変換機能
Xplentyを使用すると変換が簡単になりますが、最初は直感に反する構文になるかもしれません。右のスクリーンショットを見てください...私は、日付変換がToDateに続き、その変換内で列のToStringが続くと予想していました。

詳細については、Xplenty変換機能の記事をご覧ください。