一、今日目標
用 Google 試算表把 Day 20 累積的資料,做成最小可用的儀表板。
- 逐小時成功率(折線)
- 「資料最不新鮮」Top 10(橫條)
- 右上角顯示「資料更新於 …」
二、資料表結構
把 Day 20 的每日/每次紀錄放在 raw 工作表,欄位如下:
timestamp, apiName, status, latencyMs, isFromCache, dataFreshnessSeconds, tooManyRequestsCount, noDataCount, routeId, stopId, updateTime, stopStatus
時間:timestamp、updateTime 皆為 ISO 8601 含 +08:00
單位:latencyMs(毫秒)、dataFreshnessSeconds(秒)、其餘為數值或字串(小駝峰)
三、建立「filtered」工作表(日期範圍)
新增 filtered,用公式從 raw 依日期範圍篩出資料(假設 dashboard!B2=開始、dashboard!C2=結束):
=QUERY(
raw!A:L,
"select * where Col1 >= datetime '" & TEXT(dashboard!B2,"yyyy-mm-dd") & " 00:00:00'
and Col1 <= datetime '" & TEXT(dashboard!C2,"yyyy-mm-dd") & " 23:59:59' ",
1
)
先不分日也可以用:=ARRAYFORMULA(raw!A:L)。
四、建立「dashboard」KPI 區
在 dashboard 放下列欄位與公式:
日期範圍:B2(起)、C2(迄)
成功率(%)(E2)
=IFERROR(COUNTIF(filtered!C:C,200)/COUNTA(filtered!C:C),0)
P95 延遲(ms)(E3)
=IFERROR(PERCENTILE.INC(FILTER(filtered!D:D, filtered!C:C=200),0.95),0)
ETA 新鮮度 P95(s)(E4)
=IFERROR(PERCENTILE.INC(filtered!F:F,0.95),0)
429 次數(E5)
=IFERROR(COUNTIF(filtered!C:C,429),0)
右上角時間戳(H2)
="資料更新於 "&TEXT(MAX(filtered!A:A),"yyyy-mm-dd""T""hh:nn:ss")&"+08:00"
建議條件色:成功率(綠≥97%、黃95–97%、紅<95%);P95 延遲(綠<800、黃800–1200、紅>1200);新鮮度 P95(綠≤30、黃30–45、紅>45);429(綠=0、黃1–10、紅>10)。
五、圖 1:逐小時成功率
新增 by_hour,A1:D1 標題 hour, requests, successes, successRate,填入:
hour(A2)
=ARRAYFORMULA(UNIQUE(HOUR(filtered!A2:A)))
requests(B2)
=ARRAYFORMULA(IF(A2:A="",,COUNTIF(HOUR(filtered!A:A),A2:A)))
successes(C2)
=ARRAYFORMULA(IF(A2:A="",,COUNTIFS(HOUR(filtered!A:A),A2:A, filtered!C:C,200)))
successRate(D2)
=ARRAYFORMULA(IF(B2:B=0,,C2:C/B2:B))
選取 A1:D → 插入 → 圖表 → 折線圖,X 軸 hour、Y 軸 successRate(設為 %),加 97% 參考線。
六、圖 2:資料新鮮度最差 Top 10
新增 worst_freshness,A1:C1 標題 routeId, stopId, freshnessAvgSeconds,A2 放:
=QUERY(filtered!I:L,
"select Col1, Col2, avg(Col? )
where Col? is not null
group by Col1, Col2
order by avg(Col? ) desc
limit 10", 1)
這裡的 Col? 對應 filtered 中 dataFreshnessSeconds 的實際欄位號。
不想對欄號:可用樞紐分析表
七、把元件擺成一頁
上:四個 KPI(成功率、P95 延遲、新鮮度 P95、429)+ 右上角時間戳
下左:逐小時成功率(折線)
下右:新鮮度最差 Top 10(橫條)
字級清楚、留白足夠、標題明確。
八、說明
今天使用 Google 試算表 完成本專題第一版儀表板,資料源自 Day 20 的每日自動記錄。
儀表板包含:逐小時成功率折線圖、資料新鮮度最差前 10 橫條圖、右上角「資料更新於 …」。
KPI 與門檻色對應 Day 21 SLO 草案,讀圖方式一致;欄位命名與時間格式(ISO 8601)延續 Day 6/13/17 的規則。