本頁內容適用於 Apigee 和 Apigee Hybrid。
  
    查看 
    Apigee Edge 說明文件。
  
  
       
 
  
Apigee Analytics 會收集及分析 API 傳輸的各種資料,並提供視覺化工具,包括互動式資訊主頁、自訂報表和其他工具,可找出 API Proxy 效能趨勢。
現在,您可以將 Apigee Analytics 的分析資料匯出至自己的資料存放區 (例如 Google Cloud Storage 或 Google BigQuery),解鎖這些豐富的內容。接著,您就能運用 Google BigQuery 和 TensorFlow 提供的強大查詢和機器學習功能,自行進行資料分析。您也可以將匯出的 Analytics 資料與其他資料 (例如網頁記錄) 合併,進一步瞭解使用者、API 和應用程式。
支援哪些匯出資料格式?
將數據分析資料匯出為下列其中一種格式:
- 逗號分隔值 (CSV) - 預設分隔符號為半形逗號 (,)。支援的分隔符號包括半形逗號 (,)、直立線 (|) 和 Tab 鍵 (\t)。使用 - csvDelimiter屬性設定值,詳情請參閱「匯出要求屬性參考資料」。
- JSON (以換行符號分隔) - 允許使用換行字元做為分隔符。 
匯出的資料包括 Apigee 內建的所有 Analytics 指標和維度,以及您新增的任何自訂 Analytics 資料。如要瞭解匯出資料的說明,請參閱「數據分析指標、維度和篩選器參考資料」。
您可以將 Analytics 資料匯出至下列資料存放區:
匯出數據分析資料的步驟
以下步驟摘要說明匯出數據分析資料的程序:
- 設定資料存放區 (Cloud Storage 或 BigQuery),以匯出資料。請務必確認資料存放區已正確設定,且用於將資料寫入資料存放區的 Apigee 服務代理程式服務帳戶具備正確權限。
- 建立資料存放區,定義要匯出資料的資料存放區 (Cloud Storage 或 BigQuery) 屬性。
- 匯出數據分析資料。資料匯出作業會在背景非同步執行。
- 查看匯出要求狀態,判斷匯出作業何時完成。
- 匯出作業完成後,您可以在資料存放區中存取匯出的資料。
以下各節將詳細說明這些步驟。
設定資料存放區
設定 Cloud Storage 或 BigQuery,以啟用分析資料匯出功能。
設定 Google Cloud Storage
如要將資料匯出至 Google Cloud Storage,請先完成下列步驟:
- 確認 Google Cloud Platform 專案已啟用 BigQuery API。匯出至 Cloud Storage 時,Apigee 會使用 BigQuery API 來運用 BigQuery 匯出功能。 - 如需操作說明,請參閱「啟用 API」。 
- 請確認電子郵件地址為 - service-project-number@gcp-sa-apigee.iam.gserviceaccount.com的「Apigee 服務代理」服務帳戶已獲派下列角色:- BigQuery 工作使用者
- 儲存空間管理員
 - 專案首頁會列出 project-number,如下所示。  - 請參閱「授予、變更及撤銷資源的存取權」。 - 或者,如要修改現有角色或建立自訂角色,請為角色新增下列權限: - bigquery.jobs.create
- storage.objects.create
- storage.objects.delete
- storage.objects.list
 
設定 Google BigQuery
將資料匯出至 Google BigQuery 前,請先完成下列步驟:
- 確認已在 Google Cloud Platform 專案中啟用 BigQuery。
- 確認 Google Cloud Platform 專案已啟用 BigQuery API。如需操作說明,請參閱「啟用 API」。
- 請確認電子郵件地址為 - service-project-number@gcp-sa-apigee.iam.gserviceaccount.com的「Apigee 服務代理」服務帳戶已獲派下列角色:- BigQuery 工作使用者
- BigQuery 資料編輯者
 - 專案首頁會列出 project-number,如下所示。  - 請參閱「授予、變更及撤銷資源的存取權」。 - 如要修改現有角色或建立自訂角色,請為角色新增下列權限: - bigquery.datasets.create
- bigquery.datasets.get
- bigquery.jobs.create
- bigquery.tables.create
- bigquery.tables.get
- bigquery.tables.updateData
 
- 建立 BigQuery 資料集。 
將資料匯出至美國或歐盟的個別區域 BigQuery
由於美國或歐盟的 Analytics 資料會儲存在美國或歐盟多區域,因此您無法直接將資料匯出至 BigQuery 中的個別美國或歐盟區域。如要解決這個問題,可以先將資料匯出至 Google Cloud Storage,然後按照下列步驟將資料移轉至 BigQuery:
- 建立 Cloud Storage bucket,並將「位置」設為美國或歐盟的個別區域,與 BigQuery 中的資料建立關聯。
- 使用上一個步驟建立的儲存空間 bucket,建立 Cloud Storage 資料儲存庫。
- 將資料匯出至 Cloud Storage。如需範例,請參閱下方的「 範例 1:將資料匯出至 Cloud Storage」。
- 如要將資料載入 BigQuery,請參閱下列章節:
管理資料儲存庫
資料存放區會定義與匯出資料存放區 (Cloud Storage、BigQuery) 的連線。
下列各節說明如何建立及管理資料存放區。建議您先測試資料存放區設定,再建立資料存放區。
測試資料存放區設定
建立資料存放區時,Apigee 不會測試或驗證設定是否有效。也就是說,您可以建立資料存放區 (在下一個步驟中),但要等到第一次執行資料匯出作業時,才會偵測到任何錯誤。
資料匯出程序可能需要很長時間才能執行,因此您可以先測試資料存放區設定是否有效,並在建立資料存放區前修正所有錯誤,以便更快偵測到錯誤。
如要測試資料存放區設定,請對 /organizations/{org}/analytics/datastores:test API 發出 POST 要求。在要求主體中傳遞下列資訊:
- 顯示名稱
- 資料儲存庫類型
- 根據資料儲存庫類型設定詳細資料,如「資料儲存庫要求屬性參考資料」一文所述。
舉例來說,下列程式碼會測試 Cloud Storage 資料存放區設定:
curl "https://apigee.googleapis.com/v1/organizations/myorg/analytics/datastores:test" \
  -X POST \
  -H "Content-type:application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d \
  '{
    "displayName": "My Cloud Storage datastore",
    "targetType": "gcs",
    "datastoreConfig": {
      "projectId": "my-project",
      "bucketName": "my-bucket",
      "path": "my/analytics/path"
    }
  }'
如果測試成功,回應範例如下:
{
  "state": "completed",
}
以下是測試失敗時的回應範例:
{
  "state": "failed",
  "error": "<error message>"
}
在這種情況下,請解決錯誤訊息中提出的問題,然後重新測試資料存放區設定。測試成功後,請按照下一節的說明建立資料存放區。
建立資料儲存庫
如要建立資料存放區,請對 /organizations/{org}/analytics/datastores API 發出 POST 要求。在要求主體中傳遞下列資訊:
- 顯示名稱
- 資料儲存庫類型
- 根據資料儲存庫類型設定詳細資料,如「資料儲存庫要求屬性參考資料」一文所述。
以下提供各資料儲存區類型的範例。
以下是 Cloud Storage 資料存放區的回應範例:
{
    "self": "/organizations/myorg/analytics/datastores/c7d3b5aq-1c64-3389-9c43-b211b60de35b",
    "displayName": "My Cloud Storage datastore",
    "org": "myorg",
    "targetType": "gcs",
    "createTime": "1535411583949",
    "lastUpdateTime": "1535411634291",
    "datastoreConfig": {
          "projectId": "my-project",
          "bucketName": "my-bucket",
          "path": "my/analytics/path"
    }
}
如要查看資料存放區詳細資料,請使用 self 屬性中傳回的網址,詳情請參閱「查看資料存放區詳細資料」。
詳情請參閱「建立資料存放區 API」。
範例 1:建立 Cloud Storage 資料存放區
下列要求會建立 Cloud Storage 資料存放區:
curl "https://apigee.googleapis.com/v1/organizations/myorg/analytics/datastores" \
  -X POST \
  -H "Content-type:application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d \
  '{
    "displayName": "My Cloud Storage datastore",
    "targetType": "gcs",
    "datastoreConfig": {
      "projectId": "my-project",
      "bucketName": "my-bucket",
      "path": "my/analytics/path"
    }
  }'
其中 $TOKEN 會設為您的 OAuth 2.0 存取權杖,如「取得 OAuth 2.0 存取權杖」一文所述。如要瞭解本範例使用的 curl 選項,請參閱「使用 curl」。如要瞭解可使用的環境變數,請參閱為 Apigee API 要求設定環境變數。
範例 2:建立 BigQuery 資料儲存庫
下列要求會建立 BigQuery 資料存放區:
curl "https://apigee.googleapis.com/v1/organizations/myorg/analytics/datastores" \
  -X POST \
  -H "Content-type:application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d \
  '{
    "displayName": "My BigQuery datastore",
    "targetType": "bigquery",
    "datastoreConfig": {
      "projectId": "my-project",
      "datasetName": "mybigquery",
      "tablePrefix": "bqprefix"
    }
  }'
其中 $TOKEN 會設為您的 OAuth 2.0 存取權杖,如「取得 OAuth 2.0 存取權杖」一文所述。如要瞭解本範例使用的 curl 選項,請參閱「使用 curl」。如要瞭解可使用的環境變數,請參閱為 Apigee API 要求設定環境變數。
查看所有資料存放區
如要查看貴機構的所有資料存放區,請向 /organizations/{org}/analytics/datastores API 發出 GET 要求。
例如:
curl "https://apigee.googleapis.com/v1/organizations/myorg/analytics/datastores" \ -X GET \ -H "Authorization: Bearer $TOKEN"
其中 $TOKEN 會設為您的 OAuth 2.0 存取權杖,如「取得 OAuth 2.0 存取權杖」一文所述。如要瞭解本範例使用的 curl 選項,請參閱「使用 curl」。如要瞭解可使用的環境變數,請參閱為 Apigee API 要求設定環境變數。
以下是回應範例:
{
  "datastores": [
  {
    "self": "/organizations/myorg/analytics/datastores/c7d3b5aq-1c64-3389-9c43-b211b60de35b",
    "displayName": "My Cloud Storage datastore",
    "org": "myorg",
    "targetType": "gcs",
    "createTime": "1535411583949",
    "lastUpdateTime": "1535411634291",
    "datastoreConfig": {
          "projectId": "my-project",
          "bucketName": "my-bucket",
          "path": "my/analytics/path"
    }
  },
  {
    "self": "/organizations/myorg/analytics/datastores/g8c3f0mk-1f78-8837-9c67-k222b60ce30b",
    "displayName": "My BigQuery datastore",
    "org": "myorg",
    "targetType": "bigquery",
    "createTime": "1535411583949",
    "lastUpdateTime": "1535411634291",
    "datastoreConfig": {
      "projectId": "my-project",
      "datasetName": "mybigquery",
      "tablePrefix": "bqprefix"
    }
  }
  ]
}
詳情請參閱列出資料存放區 API。
查看資料儲存區的詳細資料
如要查看資料存放區的詳細資料,請對 /organizations/{org}/analytics/datastores/{datastore} API 發出 GET 要求。
例如:
curl "https://apigee.googleapis.com/v1/organizations/myorg/analytics/datastores/c7d3b5aq-1c64-3389-9c43-b211b60de35b" \ -X GET \ -H "Authorization: Bearer $TOKEN"
其中 $TOKEN 會設為您的 OAuth 2.0 存取權杖,如「取得 OAuth 2.0 存取權杖」一文所述。如要瞭解本範例使用的 curl 選項,請參閱「使用 curl」。如要瞭解可使用的環境變數,請參閱為 Apigee API 要求設定環境變數。
以下提供 Cloud Storage 資料儲存庫的回應範例:
{
    "self": "/organizations/myorg/analytics/datastores/c7d3b5aq-1c64-3389-9c43-b211b60de35b",
    "displayName": "My Cloud Storage datastore",
    "org": "myorg",
    "targetType": "gcs",
    "createTime": "1535411583949",
    "lastUpdateTime": "1535411634291",
    "datastoreConfig": {
          "projectId": "my-project",
          "bucketName": "my-bucket",
          "path": "my/analytics/path"
    }
}
詳情請參閱「取得資料存放區 API」。
修改資料儲存區
如要修改資料存放區,請向 /organizations/{org}/analytics/datastores/{datastore} API 發出 PUT 要求。在要求主體中傳遞下列所有或部分資訊:
- 資料儲存庫顯示名稱
- 根據資料儲存庫類型設定詳細資料,如「資料儲存庫要求屬性參考資料」一文所述。
舉例來說,如要更新 Cloud Storage 資料存放區:
curl "https://apigee.googleapis.com/v1/organizations/myorg/analytics/datastores/c7d3b5aq-1c64-3389-9c43-b211b60de35b" \
  -X PUT \
  -H "Content-type:application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d \
  '{
    "displayName": "My Cloud Storage datastore",
    "datastoreConfig": {
      "projectId": "my-project",
      "bucketName": "my-bucket",
      "path": "my/analytics/path"
    }
  }'
其中 $TOKEN 會設為您的 OAuth 2.0 存取權杖,如「取得 OAuth 2.0 存取權杖」一文所述。如要瞭解本範例使用的 curl 選項,請參閱「使用 curl」。如要瞭解可使用的環境變數,請參閱為 Apigee API 要求設定環境變數。
以下提供 Cloud Storage 資料儲存庫的回應範例:
{
    "self": "/organizations/myorg/analytics/datastores/c7d3b5aq-1c64-3389-9c43-b211b60de35b",
    "displayName": "My Cloud Storage datastore",
    "org": "myorg",
    "targetType": "gcs",
    "createTime": "1535411583949",
    "lastUpdateTime": "1535411634291",
    "datastoreConfig": {
          "projectId": "my-project",
          "bucketName": "my-bucket",
          "path": "my/analytics/path"
    }
}
詳情請參閱「更新資料存放區 API」。
刪除資料儲存庫
如要刪除資料存放區,請向 /organizations/{org}/analytics/datastores/{datastore} API 發出 DELETE 要求。
例如:
curl "https://apigee.googleapis.com/v1/organizations/myorg/analytics/datastores/c7d3b5aq-1c64-3389-9c43-b211b60de35b" \ -X DELETE \ -H "Authorization: Bearer $TOKEN"
其中 $TOKEN 會設為您的 OAuth 2.0 存取權杖,如「取得 OAuth 2.0 存取權杖」一文所述。如要瞭解本範例使用的 curl 選項,請參閱「使用 curl」。如要瞭解可使用的環境變數,請參閱為 Apigee API 要求設定環境變數。
以下是回應範例:
{}詳情請參閱刪除資料儲存庫 API。
匯出數據分析資料
如要匯出數據分析資料,請對 /organizations/{org}/environments/{env}/analytics/exports API 發出 POST 要求。在要求主體中傳遞下列資訊:
- 匯出要求的名稱和說明
- 匯出資料的日期範圍 (值只能涵蓋一天)
- 匯出資料的格式
- 資料儲存庫名稱
以下提供匯出要求的範例。如要完整瞭解要求主體屬性,請參閱匯出要求屬性參考資料。
POST 的回應格式如下:
{
    "self": "/organizations/myorg/environments/test/analytics/exports/a7c2f0dd-1b53-4917-9c42-a211b60ce35b",
    "created": "2017-09-28T12:39:35Z",
    "state": "enqueued"
}
請注意,回應中的 state 屬性已設為 enqueued。POST 要求會以非同步方式運作。也就是說,要求傳回回應後,這項作業仍會在背景執行。state 的可能值包括:enqueued、running、completed、failed。
如要查看資料匯出要求的狀態,請使用 self 屬性中傳回的網址,如「查看 Analytics 匯出要求的狀態」一文所述。要求完成後,回應中的 state 屬性值會設為 completed。然後存取資料存放區中的 Analytics 資料。
詳情請參閱「建立資料匯出 API」。
範例 1:將資料匯出至 Cloud Storage
以下範例會從 myorg 機構的 test 環境,匯出過去 24 小時的完整原始資料集。內容會以 JSON 格式匯出至 Cloud Storage:
curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/analytics/exports" \
  -X POST \
  -H "Content-type:application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d \
  '{
    "name": "Export raw results to Cloud Storage",
    "description": "Export raw results to Cloud Storage for last 24 hours",
    "dateRange": {
      "start": "2020-06-08",
      "end": "2020-06-09"
    },
    "outputFormat": "json",
    "datastoreName": "My Cloud Storage data repository"
  }'
其中 $TOKEN 會設為您的 OAuth 2.0 存取權杖,如「取得 OAuth 2.0 存取權杖」一文所述。如要瞭解本範例使用的 curl 選項,請參閱「使用 curl」。如要瞭解可使用的環境變數,請參閱為 Apigee API 要求設定環境變數。
使用 self 屬性指定的 URI 監控工作狀態,如「查看 Analytics 匯出要求狀態」一文所述。
範例 2:將資料匯出至 BigQuery
以下範例會將以半形逗號分隔的 CSV 檔案匯出至 BigQuery:
curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/analytics/exports" \
  -X POST \
  -H "Content-type:application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d \
  '{
    "name": "Export query results to BigQuery",
    "description": "One-time export to BigQuery",
    "dateRange": {
      "start": "2018-06-08", 
      "end": "2018-06-09"
    },
    "outputFormat": "csv",
    "csvDelimiter": ",", 
    "datastoreName": "My BigQuery data repository"
  }'
其中 $TOKEN 會設為您的 OAuth 2.0 存取權杖,如「取得 OAuth 2.0 存取權杖」一文所述。如要瞭解本範例使用的 curl 選項,請參閱「使用 curl」。如要瞭解可使用的環境變數,請參閱為 Apigee API 要求設定環境變數。
注意:匯出的 CSV 檔案會建立 BigQuery 資料表,並使用下列前置字串:
<PREFIX>_<EXPORT_DATE>_api_<UUID>_from_<FROM_DATE>_to_<TO_DATE>
如要監控工作狀態,請使用 self 屬性指定的 URI,詳情請參閱「查看 Analytics 匯出要求的狀態」。
匯出 API 配額簡介
為避免過度使用高成本的資料匯出 API 呼叫,Apigee 會對機構每天呼叫 organizations/{org}/environments/{env}/analytics/exports API 的次數設下 15 次的配額限制。
如果超出呼叫配額,API 會傳回 HTTP 429 回應。
查看所有 Analytics 匯出要求的狀態
如要查看所有 Analytics 匯出要求的狀態,請對 /organizations/{org}/environments/{env}/analytics/exports 發出 GET 要求。
舉例來說,下列要求會傳回 myorg 機構中 test 環境的所有資料分析匯出要求狀態:
curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/analytics/exports" \ -X GET \ -H "Authorization: Bearer $TOKEN"
其中 $TOKEN 會設為您的 OAuth 2.0 存取權杖,如「取得 OAuth 2.0 存取權杖」一文所述。如要瞭解本範例使用的 curl 選項,請參閱「使用 curl」。如要瞭解可使用的環境變數,請參閱為 Apigee API 要求設定環境變數。
以下是回應範例,列出兩項匯出要求,其中一項已加入佇列 (已建立並在佇列中),另一項則已完成:
[
  {
    "self":
"/v1/organizations/myorg/environments/test/analytics/exports/e8b8db22-fe03-4364-aaf2-6d4f110444ba",
    "name": "Export results To Cloud Storage",
    "description": "One-time export to Cloud Storage",
    "userId": "my@email.com",
    "datastoreName": "My datastore",
    "executionTime": "36 seconds",
    "created": "2018-09-28T12:39:35Z",
    "updated": "2018-09-28T12:39:42Z",
    "state": "enqueued"
  },
  {
    "self":
"/v1/organizations/myorg/environments/test/analytics/exports/9870987089fe03-4364-aaf2-6d4f110444ba"
    "name": "Export raw results to BigQuery",
    "description": "One-time export to BigQuery",
    ... 
  }
]
詳情請參閱列出資料匯出 API。
查看 Analytics 匯出要求的狀態
如要查看特定數據分析匯出要求的狀態,請對 /organizations/{org}/environments/{env}/analytics/exports/{exportId} 發出 GET 要求,其中 {exportId} 是與數據分析匯出要求相關聯的 ID。
舉例來說,下列要求會傳回 ID 為 4d6d94ad-a33b-4572-8dba-8677c9c4bd98 的 Analytics 匯出要求狀態。
curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/analytics/exports/4d6d94ad-a33b-4572-8dba-8677c9c4bd98" \ -X GET \ -H "Authorization: Bearer $TOKEN"
以下是回應範例:
{
  "self":
"/v1/organizations/myorg/environments/test/analytics/exports/4d6d94ad-a33b-4572-8dba-8677c9c4bd98",
  "name": "Export results to Cloud Storage",
  "description": "One-time export to Cloud Storage",
  "userId": "my@email.com",
  "datastoreName": "My datastore",
  "executionTime": "36 seconds",
  "created": "2018-09-28T12:39:35Z",
  "updated": "2018-09-28T12:39:42Z",
  "state": "enqueued"
}
詳情請參閱「取得資料匯出 API」。
如果分析資料匯出作業未傳回任何分析資料,executionTime 會設為「0 秒」。
Datastore 請求屬性參考資料
下表說明根據資料存放區類型建立資料存放區時,可以 JSON 格式在要求內容中傳遞的屬性。
Google Cloud Storage:
| 屬性 | 說明 | 是否必要 | 
|---|---|---|
| 專案 ID | Google Cloud Platform 專案 ID。 如要建立 Google Cloud Platform 專案,請參閱 Google Cloud Platform 說明文件中的「建立及管理專案」。 | 是 | 
| Bucket Name | 要匯出 Analytics 資料的 Cloud Storage bucket 名稱。 注意:執行資料匯出作業前,值區必須已存在。 如要建立 Cloud Storage 值區,請參閱 Google Cloud Platform 說明文件中的「建立值區」。 | 是 | 
| 路徑 | 在 Cloud Storage bucket 中儲存 Analytics 資料的目錄。 | 是 | 
BigQuery:
| 屬性 | 說明 | 是否必要 | 
|---|---|---|
| 專案 ID | Google Cloud Platform 專案 ID。 如要建立 Google Cloud Platform 專案,請參閱 Google Cloud Platform 說明文件中的「建立及管理專案」。 | 是 | 
| 資料集名稱 | 您要將 Analytics 資料匯出至哪個 BigQuery 資料集。請務必先建立資料集,再要求匯出資料。 如要建立 BigQuery 資料集,請參閱 Google Cloud Platform 說明文件中的「建立及使用資料集」。 | 是 | 
| 資料表前置字元 | 在 BigQuery 資料集中為 Analytics 資料建立的資料表名稱前置字串。 | 是 | 
匯出要求屬性參照
下表說明匯出數據資料時,可以 JSON 格式在要求主體中傳遞的屬性。
| 屬性 | 說明 | 是否必要 | 
|---|---|---|
| description | 匯出要求說明。 | 否 | 
| name | 匯出要求名稱。 | 是 | 
| dateRange | 以  
 "dateRange": {
    "start": "2018-07-29",
    "end": "2018-07-30"
}
 注意:為確保系統擷取前一天的所有資料,您可能需要延後匯出要求開始時間 (例如世界標準時間凌晨 00:05:00)。 | 是 | 
| outputFormat | 指定為 json或csv。 | 是 | 
| csvDelimiter | CSV 輸出檔案中使用的分隔符號 (如果  | 否 | 
| datastoreName | 包含資料儲存庫定義的資料儲存庫名稱。 | 是 | 
例如:
{
  "name": "Export raw results to Cloud Storage",
  "description": "Export raw results to Cloud Storage for last 24 hours",
  "datastoreName": "My Cloud Storage datastore"
}