報表最佳做法

請先在 UI 中建立新報表

報表會受到多項限制和要求的約束,這些限制和要求與報表類型、篩選器、維度和指標有關。這些限制會在 API 中強制執行,並傳回 HTTP 400 錯誤。為了避免建立報表時發生錯誤,建議您先在 Display & Video 360 UI 中建立新的報表。

建立報表後,請按一下參考文件頁面中的「試用這個 API」功能,執行 Query 資源的 queries.get。您可以使用傳回的 JSON 建構日後的報表。

使用報表類型專屬的指標和篩選器

部分指標和篩選器值僅適用於特定報表類型。除了先在 UI 中建立報表,您也可以根據 Bid Manager API 值,找出屬於特定 ReportType 值的指標和篩選器。

以下是幾種方法,可用來找出相關的 Bid Manager API 篩選器和指標值。下表列出可用於這類報表的篩選器和指標,但不代表全部。並非所有值都能在單一報表中一起使用。

ReportType 相關篩選器和指標
YOUTUBE
  • 前置字串為 FILTER_TRUEVIEW 的篩選器。
  • 前置碼為 METRIC_TRUEVIEW 的指標。
GRP
  • 前置碼為 METRIC_GRP 的指標。
YOUTUBE_PROGRAMMATIC_GUARANTEED
  • 前置字串為 FILTER_YOUTUBE_PROGRAMMATIC_GUARANTEED 的篩選器。
  • 前置碼為 METRIC_PROGRAMMATIC_GUARANTEED 的指標。
REACH
  • 前置碼為 METRIC_UNIQUE_REACH 的指標。
UNIQUE_REACH_AUDIENCE
  • 前置碼為 METRIC_UNIQUE_REACH 的指標。

儲存及重複使用報表

建議您為定期執行的查詢建立及儲存報表,因為多次插入及刪除相同的報表會浪費資源。在 dataRange 欄位中使用設定的 Range 值 (例如 PREVIOUS_DAYLAST_7_DAYS),可讓報表更容易重複使用。

排定報表執行時間

臨時或一次性報表可能會浪費資源,因為這些報表會個別執行,且可能會針對不完整的資料集執行。預定報表可充分運用報表資源,因為報表會大量執行,且系統會確保在前一天的資料處理完成前,不會執行報表。詳情請參閱可用的排程欄位

合併類似報表

如果您經常為不同的廣告客戶或合作夥伴產生相同指標和日期範圍的報表,建議您合併報表,以便最佳化報表數量。

您可以附加所有報表的篩選器,並將所有篩選器類型新增為維度,藉此合併類似的報表。產生報表後,您可以沿著原始篩選器值,將產生的報表列拆分,以產生原始報表。

考慮回報配額

我們會透過下列產品全體的使用配額,確保 Display & Video 360 報表功能的使用方式負責任。

每日臨時報表執行次數

限制使用者在 24 小時內執行臨時報表的次數。如要將報表用量維持在這個配額內,請按照下列步驟操作:

正在執行的定期報表

限制使用者在特定時間內可定期執行的報表數量。如要將報表用量維持在這個配額內,請按照下列步驟操作:

  • 合併類似的定期報表,以減少定期報表的總數。
  • 停用不必要的定期報表。
  • 停用不必要的 API 指令碼。

同時提出的報表

限制使用者可同時執行的報表數量。如要將報表用量維持在這個配額內,請按照下列步驟操作:

  • 排定定期執行報表的時間。
  • 停用不必要的 API 指令碼。
  • 使用指數輪詢邏輯進行輪詢,追蹤報表完成時間。

如果您已最佳化報表導入作業,但仍發現自己超出指定配額,請透過聯絡表單與 Display & Video 360 支援團隊聯絡。

在輪詢報表狀態時使用指數輪詢

我們無法預測報表的執行時間。時間長度可能從幾秒到幾小時不等,視日期範圍和要處理的資料量等因素而定。報表執行時間與報表中傳回的列數之間也沒有關聯。因此,您需要定期使用 queries.reports.get 方法擷取報表資源,並檢查資源的 metadata.status.state 欄位是否已更新為 DONEFAILED,以判斷報表是否已完成執行。這項程序稱為「輪詢」。

雖然輪詢是必要的,但如果實作效率不佳,在遇到執行時間很長的報表時,可能會很快耗盡配額。因此,建議您使用指數輪詢來限制重試次數,並節省配額。

指數輪詢

指數輪詢是網路應用程式的標準錯誤處理策略,讓用戶端可以定期重試失敗的要求,並逐漸增加重試次數。在正確的使用之下,指數輪詢可以提升頻寬使用的效率,減少取得成功回應所需的要求數,並最大化並行環境中的要求總處理量。

下列是簡單的指數輪詢實作流程:

  1. 向 API 提出 queries.reports.get 要求。
  2. 擷取報表物件。如果 metadata.status.state 欄位不是 DONEFAILED,表示報表尚未完成執行,應繼續輪詢。
  3. 等待 5 秒加上隨機幾毫秒的時間,然後重試要求。
  4. 擷取報表物件。如果 metadata.status.state 欄位不是 DONEFAILED,表示報表尚未完成執行,應繼續輪詢。
  5. 等待 10 秒加上隨機幾毫秒的時間,再重試要求。
  6. 擷取報表物件。如果 metadata.status.state 欄位不是 DONEFAILED,表示報表尚未完成執行,應繼續輪詢。
  7. 等待 20 秒加上隨機幾毫秒的時間,然後重試要求。
  8. 擷取報表物件。如果 metadata.status.state 欄位不是 DONEFAILED,表示報表尚未完成執行,應繼續輪詢。
  9. 等待 40 秒加上隨機幾毫秒的時間,然後重試要求。
  10. 擷取報表物件。如果 metadata.status.state 欄位不是 DONEFAILED,表示報表尚未完成執行,應繼續輪詢。
  11. 等待 80 秒鐘 + 隨機數毫秒,然後重試要求。
  12. 持續執行這個模式,直到報表物件更新或達到最大時間長度為止。

如果報表執行完畢並結束於 DONE 狀態,您可以從 metadata.googleCloudStoragePath 欄位指定的路徑,在 Google Cloud Storage 中擷取產生的報表檔案。