先在使用者介面中新建報表
報表必須遵守與報表類型、篩選器、維度和指標相關的多項限制和規定。這些限制在 API 中強制執行,並傳回 HTTP 400
錯誤。為避免建立報表時發生錯誤,建議您先在 Display &Video 360 使用者介面中建立新報表。
建立報表之後,按一下參考資料文件頁面上的「試用這個 API」功能,即可執行 Query
資源的 queries.get
。您可以使用傳回的 JSON 建立日後的報表。
儲存並重複使用報表
由於我們建議您多次插入及刪除相同的報表,因此建議您針對經常執行的查詢建立並儲存報表。使用 dataRange
欄位中已設定的 Range
值 (例如 PREVIOUS_DAY
或 LAST_7_DAYS
),即可重複使用報表。
排定報表執行時間
臨時或一次性報表可能會浪費資源,因為這類報表會個別執行,且可能無法針對不完整的資料集執行。排定的報表會善用報表資源,因為這類報表會大量執行,而且在前一天資料處理完畢後才會執行。詳情請參閱可用的排程欄位。
合併類似的報表
如果您經常為不同廣告客戶或合作夥伴產生相同指標和日期範圍的報表,建議您合併報表,以獲得最佳報表量。
您可以附加所有報表的篩選器,並將所有篩選器類型新增為維度,藉此合併類似的報表。產生之後,您可以將產生的報表資料列與原始篩選器值分開,以便產生原始報表。
考慮報表配額
以負責任的方式使用 Display & Video 360 報表功能。您可以透過下列產品的所有用量配額強制實行 Display & Video 360 報表功能。
每日執行臨時報表的次數
限制使用者在 24 小時內可以執行的臨時報表數量。 如何避免超過這個配額:
有效排定的報表
限制使用者在特定時間可主動排定的報表數量。如何避免超過這個配額:
- 合併類似的排定報表,以減少定期執行報表的整體數量。
- 停用不需要的定期報表。
- 停用不必要的 API 指令碼。
並行報表
限制使用者可同時執行的報表數量。如何避免超過這個配額:
- 排定定期執行的報表。
- 停用不必要的 API 指令碼。
- 使用指數輪詢邏輯輪詢報表完成時間。
如果您已將報表導入方式最佳化,但是仍然超過指定配額,請透過聯絡表單與 Display &Video 360 支援團隊聯絡。
輪詢狀態時採用指數輪詢策略
您無法預測報表的執行時間。時間長度從數秒到數小時不等,取決於許多因素,包括日期範圍和要處理的資料量。報表執行時間與報表中傳回的列數之間沒有關聯性。因此,您需要定期使用 queries.reports.get
方法擷取報表資源,並檢查資源的 metadata.status.state
欄位是否已更新為 DONE
或 FAILED
,以判斷其是否已執行。這項程序稱為「輪詢」。
需要進行輪詢時,效率低的實作可能會在遇到長時間執行的報表時快速用盡配額。因此,建議您使用指數輪詢功能來限制重試次數並節省配額。
指數輪詢
指數輪詢是網路應用程式的標準錯誤處理策略,其中用戶端應用程式會定期重試要求。只要正確使用,指數輪詢就能提高頻寬用量的效率,減少取得成功回應所需的要求數量,並且最大增加並行環境中要求的處理量。
下列是簡單的指數輪詢實作流程:
- 向 API 發出
queries.reports.get
要求。 - 擷取報表物件。如果
metadata.status.state
欄位不是DONE
或FAILED
,表示報表並未執行完畢。 - 等待 5 秒 + 隨機的毫秒數,然後重試要求。
- 擷取報表物件。如果
metadata.status.state
欄位不是DONE
或FAILED
,表示報表並未執行完畢。 - 等待 10 秒 + 隨機的毫秒數並重試要求。
- 擷取報表物件。如果
metadata.status.state
欄位不是DONE
或FAILED
,表示報表並未執行完畢。 - 等待 20 秒 + 隨機的毫秒數並重試要求。
- 擷取報表物件。如果
metadata.status.state
欄位不是DONE
或FAILED
,表示報表並未執行完畢。 - 等待 40 秒 + 隨機的毫秒數並重試要求。
- 擷取報表物件。如果
metadata.status.state
欄位不是DONE
或FAILED
,表示報表並未執行完畢。 - 等待 80 秒 + 隨機的毫秒數並重試要求。
- 繼續這個模式,直到報表物件更新或達到時間長度上限。
如果報表執行完畢並處於 DONE
狀態,您就可以透過 metadata.googleCloudStoragePath
欄位中指定的路徑,從 Google Cloud Storage 擷取產生的報表檔案。