Multi-ChannelFunnel Reporting API - 參考指南

本文件提供 Multi-ChannelFunnel Reporting API 查詢和回應的完整參考資料。

簡介

您可以透過「Multi-ChannelFunnel Reporting API」要求 Google Analytics (分析) 多管道漏斗報表資料。每份報表都包含統計資料,衍生自追蹤程式碼傳回至 Analytics (分析) 的資料,並以維度和指標分類。自行選擇維度和指標的組合,您就能使用 Reporting API 按照自己的規格建立自訂報表。

API 包含單一要求報表資料的方法:report.get。使用這個方法時,您必須提供要擷取資料的資料檢視 (設定檔) 對應的資料表 ID。此外,您還指定下列內容:

  • 維度和指標的組合。
  • 日期範圍。
  • 一組選項參數,用於控制要傳回哪些資料

API 於 REST 端點提供 report.get 方法: https://www.googleapis.com/analytics/v3/data/mcf。以下章節將顯示請求範例,並說明每個參數。

要求

API 提供單一要求資料的方法:

analytics.data.mcf.get()

此 API 也可做為 REST 端點進行查詢:

Authorization: Bearer {oauth2-token}

GET https://www.googleapis.com/analytics/v3/data/mcf
  ?ids=ga:12345
  &metrics=mcf:totalConversions,mcf:totalConversionValue
  &start-date=2011-10-01
  &end-date=2011-10-31

每個網址查詢參數都指定一個必須進行網址編碼的 API 查詢參數。

所有傳送至 Multi-ChannelFunnel Reporting API 的要求都必須透過 OAuth 2.0 授權。

查詢參數摘要

下表摘要列出 Multi-ChannelFunnel Reporting API 接受的所有查詢參數,按一下各參數名稱即可查看詳細說明。

名稱 必要 摘要
ids string 表單「ga:XXXX」的專屬資料表 ID,其中 XXXX 是查詢擷取資料的 Analytics (分析) 資料檢視 (設定檔) ID。
start-date string 擷取 Analytics (分析) 資料的開始日期。要求可以指定採用 YYYY-MM-DD 格式的開始日期,或以相對日期的形式指定 (例如todayyesterdayNdaysAgo,其中 N 為正整數)。
end-date string 擷取 Analytics (分析) 資料的結束日期。要求可以指定採用 YYYY-MM-DD 格式的結束日期或相對日期 (例如todayyesterdayNdaysAgo,其中 N 為正整數)。
metrics string 以半形逗號分隔的指標清單,例如 mcf:totalConversions,mcf:totalConversionValue。有效的查詢必須至少指定一個指標。
dimensions string 「多管道漏斗」報表 (例如 mcf:source,mcf:keyword) 的逗號分隔維度清單。
sort string 以半形逗號分隔的維度和指標清單,指出傳回資料的排序順序和排序方向。
filters string 維度或指標篩選器,用於限制要求傳回的資料。
samplingLevel string 所需的取樣層級。允許的值:
  • DEFAULT:傳回樣本大小的回應,在速度和準確率之間取得平衡。
  • FASTER:傳回樣本大小較小的快速回應。
  • HIGHER_PRECISION:使用大型樣本大小傳回更準確的回應,但這可能會導致回應速度變慢。
start-index integer 要擷取的第一列資料,從 1 開始。 將此參數做為分頁機制和 max-results 參數使用。
max-results integer 要納入回應的資料列數量上限。

查詢參數詳細資料

ids

ids=ga:12345
這是必填欄位。
用來擷取「多管道漏斗」資料的專屬 ID。這個 ID 是命名空間 ga: 與報表資料檢視 (設定檔) ID 的串連。您可以使用 analytics.management.profiles.list 方法擷取報表的資料檢視 (設定檔) ID,以便在 Google Analytics Management API 的資料檢視 (設定檔) 資源中提供 id

返回開頭


開始日期

start-date=2011-10-01
這是必填欄位。
所有多管道漏斗資料要求都必須指定日期範圍。 如果您未在要求中加入 start-dateend-date 參數,伺服器會傳回錯誤。您可以使用模式 YYYY-MM-DDtodayyesterdayNdaysAgo 模式,指定特定日期的日期值。值必須與 [0-9]{4}-[0-9]{2}-[0-9]{2}|today|yesterday|[0-9]+(daysAgo) 相符。
最早有效的 start-date2011-01-01。 「start-date」沒有上限。
相對日期一律會以查詢時的目前日期為準,以查詢中指定的資料檢視 (設定檔) 為準。

使用相對日期最近 7 天 (從昨天開始) 的日期範圍範例:

  &start-date=7daysAgo
  &end-date=yesterday

返回開頭


結束日期

end-date=2011-10-31
這是必填欄位。
所有多管道漏斗資料要求都必須指定日期範圍。 如果您未在要求中加入 start-dateend-date 參數,伺服器會傳回錯誤。您可以使用模式 YYYY-MM-DDtodayyesterdayNdaysAgo 模式,指定特定日期的日期值。值必須與 [0-9]{4}-[0-9]{2}-[0-9]{2}|today|yesterday|[0-9]+(daysAgo) 相符。
最早有效的 end-date2005-01-01end-date 沒有上限。
相對日期一律會以查詢時的目前日期為準,以查詢中指定的資料檢視 (設定檔) 為準。

最近 10 天 (從今天開始) 的日期範圍範例:

  &start-date=9daysAgo
  &end-date=today

返回開頭


尺寸

dimensions=mcf:source,mcf:keyword
選用。

維度參數定義了「多管道漏斗」報表的主要資料,例如 mcf:sourcemcf:medium。使用維度劃分轉換指標。舉例來說,您可以要求網站提供的總轉換次數,但您可以要求提供以媒介劃分的轉換次數。 在本例中,您會看到來自自然流量、參照連結網址和電子郵件等來源的轉換次數。

在資料要求中使用 dimensions 時,請注意下列限制:

  • 每個查詢最多可提供 7 個維度。
  • 無法傳送僅由維度組成的查詢, 您必須將任何要求的維度結合至少一項指標。

無法使用的值

如果無法判斷維度的值,Analytics (分析) 會使用特殊字串 (未設定)。

返回開頭


metrics

metrics=mcf:totalConversions,mcf:totalConversionValue
這是必填欄位。

網站使用者活動的匯總統計資料,例如轉換總數或總轉換價值。如果查詢沒有 dimensions 參數,傳回的指標會針對要求的日期範圍提供匯總值,例如整體轉換價值。不過,收到維度要求時,系統會按維度值區隔值。舉例來說,若使用 mcf:source 要求 mcf:totalConversions,系統會傳回每個來源的轉換總數。

要求指標時,請注意以下幾點:

  • 每個要求都必須提供至少一個指標;要求不能僅包含維度。
  • 每個查詢最多可提供 10 個指標。

返回開頭


排序

sort=mcf:source,mcf:medium
選用。

指標和維度清單,表示傳回資料的排序順序和排序方向。

  • 系統會依據所列出的指標和維度由左至右的順序指定「排序」
  • 排序「方向」direction預設為遞增,只要在要求欄位中加上減號 (-) 前置字串,即可變更為遞減。

將查詢結果排序,您就能針對資料提出不同的問題。例如,若要解決「我的主要轉換來源有哪些?」這個問題,可透過哪些媒介? 你可以使用下列參數執行查詢。這會先依 mcf:source 再按 mcf:medium 排序,兩者皆以遞增順序排序:

sort=mcf:source,mcf:medium

如要回答相關問題「我的主要轉換媒介有哪些?來源為何?」,您可以使用下列參數執行查詢。這會先依 mcf:medium 再按 mcf:source 排序,兩者皆以遞增順序排序:

sort=mcf:medium,mcf:source

使用 sort 參數時,請注意下列事項:

  • 請僅依據您在 dimensionsmetrics 參數中使用的維度或指標值排序。如果要求排序的欄位沒有在維度或指標參數中指出,您就會收到錯誤訊息。
  • 根據預設,字串會按照 en-US 語言代碼的字母順序遞增排序。
  • 根據預設,數字會按遞增編號排序。
  • 根據預設,日期會按照日期遞增排序。

返回開頭


篩選器

filters=mcf:medium%3D%3Dreferral
選用。

filters 查詢字串參數會限制要求傳回的資料。如要使用 filters 參數,請提供要篩選的維度或指標,並在後面加上篩選器運算式。舉例來說,下列查詢要求檢視畫面 (設定檔) 12134mcf:totalConversionsmcf:source,其中 mcf:medium 維度為 referral 字串:

https://www.googleapis.com/analytics/v3/data/mcf
?ids=mcf:12134
&dimensions=mcf:source
&metrics=mcf:totalConversions
&filters=mcf:medium%3D%3Dreferral
&start-date=2011-10-01
&end-date=2011-10-31

詳情請參閱 Core Reporting API 參考資料

返回開頭


samplingLevel

samplingLevel=DEFAULT
選用。
使用這個參數為報表查詢設定取樣層級 (例如用來計算結果的工作階段數)。可以使用的值與網頁介面一致,包括:
  • DEFAULT:傳回樣本大小的回應,在速度和準確率之間取得平衡。
  • FASTER:傳回樣本大小較小的快速回應。
  • HIGHER_PRECISION:使用大型樣本大小傳回更準確的回應,但這可能會導致回應速度變慢。
如未提供,系統會使用 DEFAULT 的取樣等級。
請參閱「取樣」一節,進一步瞭解如何計算用於查詢的工作階段百分比。

返回開頭


max-results

max-results=100
選用。

此回應內含的資料列數量上限。您可以將這個方法與 start-index 搭配使用來擷取元素子集,也可以單獨使用,藉此限制傳回的元素數量 (從第一個元素開始)。如未提供 max-results,查詢會傳回預設最多 1000 個資料列。

無論您要求的數量為何,Multi-ChannelFunnel Reporting API 最多會傳回 10,000 個資料列。如果維度區隔數量未達預期,系統也會傳回比要求少的資料列。舉例來說,mcf:medium 的可能值少於 300 個,因此,如果只按媒介區隔,即使您將 max-results 設為較高的值,也最多只能產生 300 列資料。

返回開頭


回應

如果成功,這項要求就會傳回如下定義的 JSON 結構的回應主體。

注意事項:「結果」一詞是指符合查詢的整組資料列,而「回應」則是指目前結果頁面上傳回的一組資料列。如果結果總數大於目前回應的頁面大小,則結果可能會有所不同,詳情請參閱 itemsPerPage 頁面。

回應格式

JSON
{
  "kind": "analytics#mcfData",
  "id": string,
  "query": {
    "start-date": string,
    "end-date": string,
    "ids": string,
    "dimensions": [
      string
    ],
    "metrics": [
      string
    ],
    "sort": [
      string
    ],
    "filters": string,
    "samplingLevel": string,
    "start-index": integer,
    "max-results": integer
  },
  "itemsPerPage": integer,
  "totalResults": integer,
  "selfLink": string,
  "previousLink": string,
  "nextLink": string,
  "profileInfo": {
    "profileId": string,
    "accountId": string,
    "webPropertyId": string,
    "internalWebPropertyId": string,
    "profileName": string,
    "tableId": string
  },
  "containsSampledData": boolean,
  "sampleSize": string,
  "sampleSpace": string,
  "columnHeaders": [
    {
      "name": string,
      "columnType": string,
      "dataType": string
    }
  ],
  "totalsForAllResults": [
    {
      metricName: string,
      ...
    }
  ]
  "rows": [
    [
      McfData.Rows
    ]
  ],
}

返回開頭

回應欄位

回應主體結構的屬性定義如下:

資源名稱 說明
kind string 資源類型。值為「analytics#mcfData」。
id string 此資料回應的 ID。
query object 這個物件包含以參數形式傳送至查詢的所有值。每個欄位的意義都有對應查詢參數的說明。
query.start-date string 開始日期。
query.end-date string 結束日期。
query.ids string 不重複的資料表 ID。
query.dimensions[] list 數據分析維度清單。
query.metrics[] list 數據分析指標清單。
query.sort[] list 資料排序依據的指標或維度清單。
query.filters string 以半形逗號分隔的指標或維度篩選器清單。
query.samplingLevel string Requested sampling level.
query.start-index integer 資料列的起始索引。預設值為 1。
query.max-results integer 每頁結果數量上限。
startIndex integer start-index 查詢參數指定資料列的起始索引。預設值為 1。
itemsPerPage integer 回應可包含的資料列數量上限,無論傳回的實際資料列數為何。如果指定 max-results 查詢參數,則 itemsPerPage 的值會是 max-results 或 10,000 的較小值。itemsPerPage 的預設值為 1000。
totalResults integer 查詢結果中的資料列總數,無論回應中傳回的資料列數為何。如果查詢會產生大量資料列,totalResults 可以大於 itemsPerPage。如要進一步瞭解大型查詢的 totalResultsitemsPerPage,請參閱 Paging
profileInfo object 要求取得資料的資料檢視 (設定檔) 的相關資訊。您可以透過 Google Analytics Management API 取得資料檢視 (設定檔) 資料。
profileInfo.profileId string 資料檢視 (設定檔) ID,例如 1174
profileInfo.accountId string 這個資料檢視 (設定檔) 所屬的帳戶 ID,例如 30481
profileInfo.webPropertyId string 這個資料檢視 (設定檔) 所屬的網站資源 ID,例如 UA-30481-1
profileInfo.internalWebPropertyId string 這個資料檢視 (設定檔) 所屬網站資源的內部 ID,例如 UA-30481-1
profileInfo.profileName string 資料檢視 (設定檔) 的名稱。
profileInfo.tableId string 資料檢視 (設定檔) 的資料表 ID,由「ga:」組成,後面接上資料檢視 (設定檔) ID。
containsSampledData boolean 如果回應包含取樣資料,則為 True。
sampleSize string 用來計算取樣資料的樣本數。
sampleSpace string 取樣空間總大小。這代表已選取樣本的可用樣本空間總大小。
columnHeaders[] list 列出維度名稱後方的欄標題。維度和指標的順序與透過 metricsdimensions 參數在要求中指定的順序相同。標頭數量是指維度數量 + 指標數量。
columnHeaders[].name string 維度或指標的名稱。
columnHeaders[].columnType string 資料欄類型。「DIMENSION」或「METRIC」。
columnHeaders[].dataType string 資料類型。維度欄標題只包含 "STRING""MCF_SEQUENCE" 做為資料類型。指標欄標題具有指標值的資料類型,例如 "INTEGER""DOUBLE""CURRENCY" 等。
totalsForAllResults object 要求指標的總值,做為指標名稱和值的鍵/值組合。指標總數的順序與要求中指定的指標順序相同。
rows[] list

報表資料列,其中每一列都包含 Mcf.Rows 物件清單。此內部清單代表維度值,後面接著指標值,按照要求指定的順序排列。每個資料列都有 N 個欄位清單,其中 N = 維度數量 + 指標數量。

Mcf.Rows 物件會納入其他可以是 primitiveValueconversionPathValue 類型的物件。維度值可以是任一類型,而所有指標值都是 primitiveValue 類型。

primitiveValue 只是包裝在物件中的字串。例如:

{
  "primitiveValue": "2183"
}

conversionPathValue 是包裝在物件陣列中的物件,每個物件都包含 nodeValue 字串和選用的 interactionType 字串。例如:

{
  "conversionPathValue": [
    {
      "interactionType" : "CLICK",
      "nodeValue" : "google"
    },
    {
      "interactionType" : "CLICK",
      "nodeValue" : "google"
    }
  ]
}

返回開頭

錯誤代碼

如果要求成功,Multi-ChannelFunnel Reporting API 會傳回 200 HTTP 狀態碼。如果處理查詢時發生錯誤,API 會傳回錯誤代碼和說明。每個使用 Analytics API 的應用程式都必須導入適當的錯誤處理邏輯。如要進一步瞭解錯誤代碼及其處理方式,請參閱 錯誤回應參考指南

返回開頭

試試看!

使用下方的 APIs Explorer,針對有效資料呼叫這個方法,然後查看回應。

返回開頭

取樣

Google Analytics (分析) 會即時計算特定維度和指標的組合。為了在合理的時間內傳回資料,Google Analytics (分析) 可能只會處理資料樣本。

您可以設定 samplingLevel 參數,指定要求的取樣等級。

如果 MCF Reporting API 回應包含取樣資料,containsSampledData 回應欄位將會是 true。 此外,有 2 項屬性將提供查詢的取樣層級相關資訊:sampleSizesampleSpace。您可以利用這 2 個值,計算用於查詢的工作階段百分比。舉例來說,如果 sampleSize201,000sampleSpace220,000,則報表會以 (201,000 / 220,000) * 100 = 91.36% 的工作階段為依據。

如需取樣的一般說明及在 Google Analytics (分析) 中的使用方式,請參閱取樣一文。

返回開頭

處理大型資料結果

如果您預期查詢會傳回大型結果集,請參考下方指南協助您最佳化 API 查詢、避免錯誤,並將配額超額降到最低。請注意,為了設定效能基準,每個 API 要求最多可允許 7 個維度和 10 個指標。雖然某些指定大量指標和維度的查詢可能需要較長的處理時間,但限制要求的指標數量可能不足以改善查詢效能。建議您改用下列技巧,獲得最佳效能結果。

減少每次查詢的維度

API 可讓您在任何請求中指定最多 7 個維度。 很多時候,Google Analytics (分析) 必須即時計算這些複雜查詢結果。如果產生的資料列數量偏高,可能相當耗時。舉例來說,按城市 (按城市劃分) 查詢關鍵字,可能會符合數百萬列的資料。您可以限制查詢中的維度數量,減少 Google Analytics (分析) 需要處理的資料列數量,藉此提升效能。

按日期範圍拆分查詢

請考慮一次處理一週 (甚至是一天) 的個別查詢,而不是逐頁瀏覽某個較長的日期範圍 (以日期表示) 的結果。當然,對於大型資料集,即使要求的是一天資料,系統也可能傳回超過 max-results,這時無法避免分頁。但在任何情況下,如果查詢的相符資料列數高於 max-results,則分隔日期範圍可能會減少擷取結果的總時間。這個方法可以改善單一執行緒和平行查詢的效能。

Paging

逐頁瀏覽結果是將大型結果集分成多個可管理區塊的實用方法。totalResults 欄位會顯示相符的資料列數量,itemsPerPage 則提供結果中可獲得的資料列數量上限。如果 totalResultsitemsPerPage 的比例很高,則個別查詢的處理時間可能會超過必要。如果您只需要少量的資料列 (例如為了顯示用途),透過 max-results 參數設定明確的回應大小限制會比較方便。不過,如果您的應用程式需要處理大量的大量結果,則要求允許的資料列數量上限可能更有效率。

使用 gzip

如果想要減少每個要求所需的頻寬,最簡單的方法就是啟用 gzip 壓縮。雖然此方法需要額外的 CPU 時間解壓縮結果,但相對可省下網路費用。如要接收以 gzip 編碼的回應,您必須執行下列兩項操作:設定 Accept-Encoding 標頭,並修改使用者代理程式來加入 gzip 字串。以下是啟用 gzip 壓縮的正確 HTTP 標頭格式範例:

Accept-Encoding: gzip
User-Agent: my program (gzip)