

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 連線至 Monday
<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>

您必須先符合下列要求，才能使用 從 Pendo AWS Glue 傳輸：

## 最低需求
<a name="pendo-configuring-min-requirements"></a>
+ 您擁有一個具有 `apiKey` 的 Pendo 帳戶，且已啟用 `write access`。
+  您的 Pendo 帳戶具有包含有效授權的 API 存取。

如果您符合這些要求，就可以 AWS Glue 連線到您的 Pendo 帳戶。對於一般連線，不需要在 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，依照下列步驟在 **Data Connections** 下建立連線：

   1. 選取**資料來源**時，請選取 Pendo。

   1. 提供您要連線的 PayPal 執行個體的 `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. 選取您要用於此連線`secretName`的 AWS Glue ，以放置字符。

   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)


| 實體 | 可以篩選 | 支援限制 | 支援排序依據 | 支援選取 \$1 | 支援分區 | 
| --- | --- | --- | --- | --- | --- | 
| 功能 | 否 | 否 | 否 | 是 | 否 | 
| 指南 | 否 | 否 | 否 | 是 | 否 | 
| 頁面 | 否 | 否 | 否 | 是 | 否 | 
| 報告 | 否 | 否 | 否 | 是 | 否 | 
| 報告資料 | 否 | 否 | 否 | 是 | 否 | 
| 訪客 (彙總 API) | 是 | 否 | 是 | 是 | 否 | 
| 帳戶 (彙總 API) | 是 | 否 | 是 | 是 | 否 | 
| 事件 (彙總 API) | 是 | 否 | 是 | 是 | 否 | 
| 特徵事件 (彙總 API) | 是 | 否 | 是 | 是 | 是 | 
| 指南事件 (彙總 API) | 是 | 否 | 是 | 是 | 是 | 
| 帳戶 (彙總 API) | 是 | 否 | 是 | 是 | 是 | 
| 頁面事件 (彙總 API) | 是 | 否 | 是 | 是 | 是 | 
| 輪詢事件 (彙總 API) | 是 | 否 | 是 | 是 | 是 | 
| 追蹤事件 (彙總 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`(String) - (必要) 用於讀取/寫入。Pendo 中的物件名稱。
+ `INSTANCE_URL`(String) - (必要) 具有下列允許值的有效 Pendo 執行個體 URL：
  + [預設](https://app.pendo.io/)
  + [歐洲](https://app.eu.pendo.io/)
  + [US1](https://us1.app.pendo.io/)
+ `API_VERSION`(String) - (必要) 用於讀取。您要使用的 Pendo Engage Rest API 版本。例如：3.0。
+ `SELECTED_FIELDS`(List<String>) - 預設：empty(SELECT \$1)。用於讀取。您要為物件選取的資料欄。
+ `FILTER_PREDICATE`(String) - 預設：空白。用於讀取。其應該為 Spark SQL 格式。
+ `QUERY`(String) - 預設：空白。用於讀取。完整的 Spark SQL 查詢。
+ `PARTITION_FIELD`(String) - 用於讀取。用於分區查詢的欄位。
+ `LOWER_BOUND`(String) - 用於讀取。所選分區欄位的包含下限值。
+ `UPPER_BOUND`(String) - 用於讀取。所選分區欄位的唯一上限值。
+ `NUM_PARTITIONS`(Integer) - 預設：1。用於讀取。要讀取的分區數目。

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

以下是 Pendo 連接器的限制：
+ Pendo 中不支援分頁。
+ 僅彙總 API 物件 (`Account`、`Event`、`Feature Event`、`Guide Events`、`Page Event`、`Poll Event`、`Track Event` 和 `Visitor`) 支援篩選
+ DateTimeRange 是彙總 API 物件的強制性篩選參數 (`Event`、`Feature Event`、`Guide Events`、`Page Event`、`Poll Event,`、`Track Event`)
+ dayRange 時段會四捨五入至時區中時段的開始。例如，如果提供的篩選條件為 `2023-01-12T07:55:27.065Z`，則此時段將四捨五入至該時段的開始，也就是 `2023-01-12T00:00:00Z`。