活動合約
查詢期望的欄位
| 欄位 | 型別 | 為什麼存在 |
|---|---|---|
| timestamp_utc | Timestamp | 事件發生時間。 |
| event_name | Utf8 | 穩定事件合約名稱。 |
| account_id | Utf8 | 這些事件需要帳戶識別符號。 |
| producer_version | Utf8 | 發出事件的應用程式版本。 |
DataFusion SQL
複製查詢
sql
SELECT
event_name,
producer_version,
COUNT(*) AS events,
SUM(CASE
WHEN account_id IS NULL OR trim(account_id) = '' THEN 1
ELSE 0
END) AS missing_account_id,
100.0 * SUM(CASE
WHEN account_id IS NULL OR trim(account_id) = '' THEN 1
ELSE 0
END) / NULLIF(COUNT(*), 0) AS missing_rate_pct
FROM product_events
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY event_name, producer_version
HAVING COUNT(*) >= 20
ORDER BY missing_rate_pct DESC, events DESC;此只讀查詢是針對空型別資料表計劃和執行的 阿帕奇 DataFusion 45.2.0。確定性樣本輸出是綜合的並單獨審查;根據您自己的資料驗證欄位型別、閾值和業務定義。 閱讀測試方法。
查詢結果
按活動和製作人劃分的帳戶 ID 缺失率
儀表板事件具有特定於版本的完整性迴歸。
dashboard_viewed
18.49%
query_completed
0.18%
| event_name | producer_version | events | missing_account_id | missing_rate_pct |
|---|---|---|---|---|
| dashboard_viewed | web-1842 | 6,420 | 1,187 | 18.49 |
| query_completed | api-918 | 3,810 | 7 | 0.18 |
綜合範例輸出。在將其用於操作決策之前,針對您自己的事件架構和閾值執行查詢。
SQL 是如何工作的
- 1CASE 表示式將 NULL 和空字串視為缺失。
- 2按 producer_version 分組使部署迴歸更容易隔離。
- 3最小數量規則可以防止少數開發事件在報告中佔據主導地位。
需要決定的邊緣情況
- 僅評估活動合約中真正需要的欄位。
- 匿名產品事件可能合法地缺少 account_id,並且應使用單獨的完整性規則。
- 諸如“未知”之類的佔位符不為 NULL,但仍可以隱藏缺失的身分;單獨測量哨兵值。
推薦儀表板
- 條形:missing_rate_pct by event_name 和 producer_version
- 趨勢:關鍵合約的完成率
- 資料表:最近的行缺少必填欄位
讓查詢範例發揮作用
相關埋點和指南
繼續分析
在真實事件中執行它
建立資料表,調整欄位並儲存結果
免費開始,傳送結構化事件,並將查詢結果用作圖表、共享儀表板小工具或警示輸入。