Day 26 先替「告警觸發事件數」寫清楚定義,也規劃用 SQL 核對摘要卡。接下來,我想知道告警集中在哪些日子、Q17 是否持續出現相同問題。但把總數改成每日或每週,就多了新的判斷:事件要算在哪一天?一週從哪天開始?切換設備後,哪些圖應該跟著改變?
我先保留前一篇的去重方式與觸發事件定義,再處理時間與篩選,避免一次改動太多設定,最後不知道差異從哪裡來。以下仍是設備維運的設計情境,新增圖表與測試尚未經真實資料驗證。
一筆事件可能同時有發生時間與寫入 BigQuery 的時間。如果設備事件隔天才到達,用寫入日期分組,就會把前一天的告警移到隔天。這張圖回答的是「資料何時進來」,並不是「告警何時發生」。
因此,設備趨勢頁採事件發生時間,寫入時間留給資料到達情況的檢查。若事件時間缺失,我會另列待確認數量,不直接拿寫入時間補上。
若 event_time 是 TIMESTAMP,我規劃在 BigQuery 用 DATE(event_time, 'Asia/Taipei') 取得台北日期,命名為 local_event_date。官方說明指出,從 TIMESTAMP 取日期而未指定時區時,預設使用 UTC。
這個差異在午夜附近尤其重要。我需要先確認原始時間如何保存,再固定時區與日期轉換;不能只把圖表日期的顯示格式改成中文,就當成已完成時區處理。
改看每週趨勢時,我先選定星期一為週起日。BigQuery 的週起日期可用:
DATE_TRUNC(local_event_date, WEEK(MONDAY))
它把同週日期歸到該週星期一。我會用完整週起日期作為分組與標示,不只顯示「第幾週」,避免不同年份的週數混在一起。
若在 Data Studio(原 Looker Studio)新增計算欄位,則可用 DATETIME_TRUNC(local_event_date, ISOWEEK) 核對星期一起算的結果。官方文件中,WEEK 從星期日開始,ISOWEEK 從星期一開始,而且這個函式回傳 Date & Time 型別。因此,我還要核對來源型別與圖表使用方式,不能只看公式儲存成功。
另一個問題是範圍不完整。若先篩選某個月份,再按週彙總,月初與月底的週可能只留下部分日期。我會標示「所選範圍內的週統計」,並註明邊界週不完整,避免把部分週與完整週的差異解讀成告警改善。
時序圖某天沒有資料,可能是沒有觸發事件,也可能是資料尚未到達或收集不完整。光靠事件表查不到紀錄,我無法區分這些情況。
官方時序圖提供 Line To Zero、Line Breaks 與 Linear Interpolation,分別讓缺日期落到零、顯示斷線,或連接前後資料點。這些是呈現選項,不是資料完整性的證據。
在沒有接收完整性證據時,我會保留缺口並標明未知,不用補零營造設備穩定的印象。只有確認該日資料完整,而且確實沒有觸發事件,才把零解讀為「沒有告警觸發紀錄」。即使如此,它也不能證明設備當天完全正常。
加入日期控制後,我最需要防止的誤會,是讀者以為同一頁的圖表都在看同一種時間。
官方日期控制可以影響不同來源的圖表,但各圖依自己的 Date Range Dimension,也就是用來篩選日期範圍的欄位運作。個別圖表的固定日期設定可以覆寫控制;把控制與圖表群組,也會限制作用範圍。
因此,我規劃設備頁的摘要卡與日、週趨勢,都以事件的台北日期篩選。若其他頁面日後使用回報日期或審核日期,就要明確標示,不能因為選了同一段期間,就把它們當成同一批工作。
目前回報若缺可靠日期,我不替它補造時間,也不讓它假裝受事件日期控制。操作時,我會逐圖確認來源、日期欄位及控制範圍,而不是只看畫面上的日期選擇是否改變。
設備下拉選單又有另一個限制:兩個來源都把欄位叫作「設備」,不代表同一個控制就能篩選它們。
官方文件指出,一般篩選控制依欄位 ID 運作,顯示名稱相同,ID 仍可能不同。必要時可以在報表層覆寫 ID,但共用 ID 的欄位必須具有相同型別;修改正在使用的 ID,也可能讓原有圖表需要重新選取欄位。
我會先確認欄位是否真的代表相同設備,再處理設定。沿用既有設計,N201 對應 Q17;N202、N203 沒有可靠設備關聯,就不能替它們補上 Q17,也不能靠覆寫 ID 建立不存在的關係。日期控制與設備下拉選單的運作方式不同,兩者都需要各自驗收。
控制項能操作,只代表畫面接受了選擇。我規劃切到查看模式,逐一測試以下情況,並與相同定義的 SQL 比較:

比較時還要固定資料截止時間,避免 SQL 查完後有新事件入表,卻被誤認為報表算錯。我會保留設定與數值對照,並確認標題能交代實際範圍;只有測試設計,還不能宣稱驗收完成。
時間與篩選的意義清楚後,下一個問題才浮現:告警總數可以在同範圍下核對,那麼「每台設備平均觸發次數」或「審核退回比例」,切換日期與設備後,分子、分母是否也會正確重算?