

# Pendo への接続
<a name="connecting-to-pendo"></a>

Pendo は、ユーザーインタラクションデータ用の豊富なデータストアを提供します。お客様は、このデータを AWS に転送し、必要に応じて、他の製品データと結合したり、追加の分析やダッシュボードを実行したり、アラートを設定したりできるようにします。

**Topics**
+ [AWS Glue の Pendo のサポート](pendo-support.md)
+ [接続を作成および使用するための API オペレーションを含むポリシー](pendo-configuring-iam-permissions.md)
+ [Pendo の設定](pendo-configuring.md)
+ [Pendo 接続の設定](pendo-configuring-connections.md)
+ [Pendo エンティティからの読み取り](pendo-reading-from-entities.md)
+ [Pendo 接続オプション](pendo-connection-options.md)
+ [制限](pendo-connector-limitations.md)

# AWS Glue の Pendo のサポート
<a name="pendo-support"></a>

AWS Glue は、次のように Pendo をサポートしています。

**ソースとしてサポートされていますか?**  
はい。AWS Glue ETL ジョブを使用して、Pendo からデータをクエリできます。

**ターゲットとしてサポートされていますか?**  
いいえ。

**サポートされている Pendo API バージョン**  
 v1 

# 接続を作成および使用するための API オペレーションを含むポリシー
<a name="pendo-configuring-iam-permissions"></a>

次のサンプル ポリシーで、接続の作成と使用に必要な AWS の権限について説明します。新しいロールを作成する場合は、以下を含むポリシーを作成します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

上記の方法を使用しない場合は、代わりに次のマネージド IAM ポリシーを使用します。
+  [ AWSGlueServiceRole ](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole) – さまざまな AWS Glue プロセスを実行するために必要なリソースへのアクセス権をユーザーに代わって付与します。これらのリソースには、AWS Glue、Amazon S3、IAM、CloudWatch Logs、および Amazon EC2 が含まれます。このポリシーで指定されたリソースの命名規則に従った場合、AWS Glue プロセスは必要なアクセス許可を使用できます。このポリシーは、通常、クローラー、ジョブ、開発エンドポイントを定義するときに指定されたロールにアタッチされます。
+  [ AWSGlueConsoleFullAccess ](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess) — ポリシーがアタッチされているアイデンティティが AWS マネージメントコンソールを使用するときは、AWS Glue リソースへのフルアクセスを許可します。このポリシーで指定されたリソースの命名規則に従った場合、ユーザーは完全なコンソール機能を使用できます。このポリシーは、通常 AWS Glue コンソールのユーザーにアタッチされています。

# Pendo の設定
<a name="pendo-configuring"></a>

AWS Glue を使用して Pendo から転送できるようにするには、次の要件を満たす必要があります。

## 最小要件
<a name="pendo-configuring-min-requirements"></a>
+ `write access` が有効になっている `apiKey` を持つ Pendo アカウントがある。
+  Pendo アカウントに、有効なライセンスを持つ API アクセスがある。

これらの要件を満たすと、Pendo アカウントに AWS Glue を接続する準備が整います。一般的な接続では、Pendo で他に何もする必要はありません。

# Pendo 接続の設定
<a name="pendo-configuring-connections"></a>

Pendo はカスタム認可をサポートしています。

カスタム認可に必要な API キーの生成に関する Pendo の公開ドキュメントについては、[Pendo REST API ドキュメントの認可に関するページ](https://engageapi.pendo.io/?bash#getting-started)を参照してください。

Pendo 接続を設定するには:

1. AWS Secrets Manager で、次の詳細を含むシークレットを作成します。
   + カスタマーマネージド接続アプリケーションの場合 – シークレットには、`apiKey` を使用して接続されたアプリケーションのコンシューマーシークレットをキーとして含める必要があります。
**注記**  
AWS Glue で接続ごとにシークレットを作成する必要があります。

1. AWS Glue Studio で、以下の手順に従って **[データ接続]** の下に接続を作成します。

   1. **[データソース]** を選択する際に、[Pendo] を選択します。

   1. 接続先の Pendo インスタンスの `instanceUrl` を指定します。

   1. AWS Glue が次のアクションを担い、その権限を持つことができる IAM ロールを選択します。

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1. AWS Glue でこの接続に使用する `secretName` を選択して、トークンを配置します。

   1.  ネットワークを使用する場合は、ネットワークオプションを選択します。

1. AWS Glue ジョブに関連付けられている IAM ロールに `secretName` を読み取るアクセス許可を付与します。

1. AWS Glue ジョブ設定で、[追加のネットワーク接続] として `connectionName` を指定します。

# Pendo エンティティからの読み取り
<a name="pendo-reading-from-entities"></a>

 **前提条件** 

読み取り元の Pendo オブジェクト。使用可能なエンティティを確認するには、以下のサポートされているエンティティの表を参照してください。

 **サポートされているエンティティ** 
+ [機能](https://developers.pendo.io/docs/?bash#feature)
+ [ガイド](https://developers.pendo.io/docs/?bash#guide)
+ [ページ](https://developers.pendo.io/docs/?bash#page)
+ [レポートを行う](https://developers.pendo.io/docs/?bash#report)
+ [レポートデータ](https://developers.pendo.io/docs/?bash#return-report-contents-as-array-of-json-objects)
+ [訪問者](https://developers.pendo.io/docs/?bash#visitor)
+ [アカウント](https://developers.pendo.io/docs/?bash#entities)
+ [イベント](https://developers.pendo.io/docs/?bash#events-grouped)
+ [フィーチャーイベント](https://developers.pendo.io/docs/?bash#events-grouped)
+ [ガイドイベント](https://developers.pendo.io/docs/?bash#events-ungrouped)
+ [ページイベント](https://developers.pendo.io/docs/?bash#events-grouped)
+ [投票調査イベント](https://developers.pendo.io/docs/?bash#events-ungrouped)
+ [トラックイベント](https://developers.pendo.io/docs/?bash#events-grouped)


| エンティティ | フィルタリング可能 | 制限をサポートする | Order By をサポートする | Select \$1 をサポートする | パーティショニングをサポートする | 
| --- | --- | --- | --- | --- | --- | 
| 機能 | いいえ | なし | なし | あり | なし | 
| ガイド | いいえ | なし | なし | あり | なし | 
| ページ | いいえ | なし | なし | あり | なし | 
| レポートを行う | いいえ | なし | なし | あり | なし | 
| レポートデータ | いいえ | なし | なし | あり | なし | 
| 訪問者 (Aggregation API) | はい | なし | はい | あり | なし | 
| アカウント (Aggregation API) | はい | なし | はい | あり | なし | 
| イベント (Aggregation API) | はい | なし | はい | あり | なし | 
| フィーチャーイベント (Aggregation API) | はい | なし | はい | はい | はい | 
| ガイドイベント (Aggregation API) | はい | なし | はい | はい | はい | 
| アカウント (Aggregation API) | はい | なし | はい | はい | はい | 
| ページイベント (Aggregation API) | はい | なし | はい | はい | はい | 
| 投票調査イベント (Aggregation API) | はい | なし | はい | はい | はい | 
| トラックイベント (Aggregation API) | はい | なし | はい | はい | はい | 

 **例** 

```
Pendo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="glue.spark.Pendo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "feature",
        "API_VERSION": "v1",
        "INSTANCE_URL": "instanceUrl"
    }
```

## パーティショニングクエリ
<a name="adobe-marketo-engage-reading-partitioning-queries"></a>

Spark で同時実行を使用する場合は、追加の Spark オプション `PARTITION_FIELD`、`LOWER_BOUND`、`UPPER_BOUND`、および `NUM_PARTITIONS` を指定できます。これらのパラメータを使用すると、元のクエリは Spark タスクで同時に実行できるサブクエリの `NUM_PARTITIONS` の数に分割されます。
+ `PARTITION_FIELD`: クエリのパーティション化に使用するフィールドの名前。
+ `LOWER_BOUND`: 選択したパーティションフィールドの**包括的な**下限値。

  DateTime フィールドでは、ISO 形式の値を受け入れます。

  有効な値の例:

  ```
  "2024-07-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND`: 選択したパーティションフィールドの**排他的**上限値。
+ `NUM_PARTITIONS`: パーティション数。

次の表に、エンティティパーティション分割フィールドのサポートの詳細を示します:


| エンティティ名 | 
| --- | 
| イベント | 
|  フィーチャーイベント  | 
| ガイドイベント | 
| ページイベント | 
| 投票調査イベント | 
| トラックイベント | 

例:

```
pendo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="glue.spark.pendo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "event",
        "API_VERSION": "v1",
        "INSTANCE_URL": "instanceUrl"
        "NUM_PARTITIONS": "10",
        "PARTITION_FIELD": "appId"
        "LOWER_BOUND": "4656"
        "UPPER_BOUND": "7788"
    }
```

# Pendo 接続オプション
<a name="pendo-connection-options"></a>

Pendo の接続オプションは次のとおりです。
+  `ENTITY_NAME`(文字列) – (必須) 読み取り / 書き込みに使用されます。Pendo のオブジェクトの名前。
+ `INSTANCE_URL`(文字列) - (必須) 以下の許容値を持つ有効な Pendo インスタンス URL。
  + [デフォルト](https://app.pendo.io/)
  + [欧州](https://app.eu.pendo.io/)
  + [US1](https://us1.app.pendo.io/)
+ `API_VERSION`(文字列) – (必須) 読み取りに使用されます。使用する Pendo Engage Rest API バージョン。例: 3.0。
+ `SELECTED_FIELDS`(List<String>) – Default: empty(SELECT \$1). 読み込みに使用されます。オブジェクトに選択する列です。
+ `FILTER_PREDICATE`(文字列) – デフォルト: 空 読み込みに使用されます。Spark SQL 形式である必要があります。
+ `QUERY`(文字列) - デフォルト: 空 読み込みに使用されます。完全な Spark SQL クエリです。
+ `PARTITION_FIELD`(文字列) - 読み取りに使用されます。クエリをパーティション化するために使用するフィールドです。
+ `LOWER_BOUND`(文字列) - 読み取りに使用されます。選択したパーティションフィールドの包括的な下限値。
+ `UPPER_BOUND` (文字列) - 読み取りに使用されます。選択したパーティションフィールドの排他的上限値。
+ `NUM_PARTITIONS`(整数) – デフォルト: 1。読み込みに使用されます。読み取り用のパーティションの数です。

# 制限
<a name="pendo-connector-limitations"></a>

Pendo コネクタの制限は次のとおりです。
+ ページ分割は Pendo でサポートされません。
+ フィルタリングは Aggregate API オブジェクト (`Account`、`Event`、`Feature Event`、`Guide Events`、`Page Event`、`Poll Event`、`Track Event`、`Visitor`) でのみサポートされます
+ DateTimeRange は Aggregate API オブジェクト (`Event`、`Feature Event`、`Guide Events`、`Page Event`、`Poll Event,` `Track Event`) の必須フィルターパラメータです
+ dayRange 期間は、タイムゾーンの期間の開始時に切り下げられます。例えば、指定されたフィルターが `2023-01-12T07:55:27.065Z` の場合、この期間は期間の開始時、つまり `2023-01-12T00:00:00Z` に丸められます。