現在,您的數位雙胞胎建構器(預覽)資料已投影到 eventhouse,您可以使用 KQL 查詢語句檢查它,並使用 Real-Time 儀表板將其視覺化。 在本教學課程的這個部分中,您會使用範例查詢來設定 KQL(Kusto 查詢語言)查詢集,以從數據擷取深入解析,然後使用 Real-Time 儀錶板將這些深入解析可視化。
這很重要
這項功能目前處於預覽階段。
使用 KQL 查詢數據
從教學課程的上一個部分開始 Tutorial_queryset 。
請使用查詢窗格上方的+建立下列新查詢。 (如需建立 KQL 查詢的詳細資訊,請參閱 在 KQL 查詢集中查詢數據。
延遲狀態
此查詢會比較目前時間和下一個車站與排程抵達時間,以計算每個公交車車程的延遲。
//Start with the function generated by the eventhouse projection to get your time series bus data
Bus_timeseries()
// Parse your travel‑time string into a timespan
| extend TimeToNextStationSpan = totimespan(TimeToNextStation)
// Compute when the bus will actually arrive
| extend PredictedArrival = PreciseTimestamp + TimeToNextStationSpan
// Compare that prediction to the schedule
| extend Delay = PredictedArrival - ScheduleTime
| extend DelayRounded = format_timespan(Delay, 'hh:mm:ss')
// Flag and label a delay of more than 5 minutes
| extend IsDelayed = Delay > 5m
| extend DelayLabel = iff(IsDelayed, "Delayed", "On‑Time")
// Select final output columns
| project
TripId,
BusLine,
StopCode,
DelayLabel,
DelayRounded,
PreciseTimestamp,
TimeToNextStationSpan,
PredictedArrival,
ScheduledArrival = ScheduleTime
執行查詢並查看結果。
各站延遲
此查詢會從公車站的角度計算延遲的相關信息,包括公車站的平均延遲時間,以及行程晚點的頻率。
// Compute delay for each event
let delays =
Bus_timeseries()
| extend TimeToNextStationSpan = totimespan(TimeToNextStation)
| extend PredictedArrival = PreciseTimestamp + TimeToNextStationSpan
| extend Delay = PredictedArrival - todatetime(ScheduleTime);
// Join to Stop metadata
delays
| join kind=inner (
Stop_property()
| project Stop_Code, DisplayName, Borough, Suggested_Locality
) on $left.StopCode == $right.Stop_Code
// Aggregate
| summarize
AvgDelayMinutes = avg(Delay) // average timespan
/ 1m, // convert to minutes
TotalRuns = count(),
LateRuns = countif(Delay > 5m)
by Stop_Code, DisplayName, Borough, Locality=Suggested_Locality
| extend PercentLate = round((todouble(LateRuns) / TotalRuns * 100), 2)
| sort by AvgDelayMinutes
執行查詢並查看結果。
公車及路線延誤
此查詢會從公交車路線的觀點計算延遲的相關信息,並計算每一個公交車線路和停車代碼組合的平均延遲。
Bus_timeseries()
| extend
// inline compute delay minutes without a two‑step PredictedArrival alias
DelayMinutes =
(
PreciseTimestamp
+ totimespan(TimeToNextStation)
- todatetime(ScheduleTime)
) / 1m
| summarize
AvgDelayMin = round(avg(DelayMinutes), 0) // round to whole minutes
by BusLine, StopCode
| sort by AvgDelayMin
執行查詢並查看結果。
估計延遲
此查詢會根據目前時間和下一站的時間,預測下一站的公交車是否會遲到。
Bus_timeseries()
// Compute when the bus will actually arrive at the next stop
| extend PredictedArrival = PreciseTimestamp + totimespan(TimeToNextStation)
// Classify "will be late" as a boolean
| extend WillBeLate = PredictedArrival > todatetime(ScheduleTime) + 5m
// Select final output columns
| project
PreciseTimestamp,
StopCode,
PredictedArrival,
WillBeLate
執行查詢並查看結果。
將 Real-Time 儀錶板中的數據可視化
現在,您已經擁有一些 KQL 查詢,可以從數位雙胞胎生成器的預覽版本數據中擷取深入解析,您可以在 Real-Time 儀錶板中將這些查詢的結果可視化。
在本節中,您會使用範本檔案來填入 Real-Time 儀錶板,其中包含您在上一節中建立的查詢中的數據,以及一些額外的查詢。
以下是儀錶板的外觀(請注意上一節的查詢: 延遲狀態、依 停車延遲、 公交車和路線延誤,以及 估計延遲時間):
建立新的儀表板
首先,在Fabric工作區中建立空白 Real-Time 儀表板。
即時儀錶板存在於工作區的內容中。 新的即時儀錶板一律會與您建立工作區時所使用的工作區相關聯。
流覽至所需的工作區。
選取 + 新增項目。
在 新增項目 視窗中,選取 儀錶板Real-Time。 如有需要,請使用文本框進行搜尋。
在 [ 新增 Real-Time 儀錶板 ] 彈出視窗中,輸入儀錶板的名稱,然後選取 [ 建立]。
工作區中會建立新的儀錶板。
上傳範本並連線數據源
接下來,使用模板檔案,根據您稍早的 KQL 查詢,將圖塊填入儀錶板。
從 GitHub 中的範例資料夾下載 DTB+RTI_dashboard.json 儀錶板範本: digital-twin-builder/bus-scenario。
在 Real-Time 儀表板中,選取 管理 索引標籤,然後選擇 取代為檔案。
開啟您下載的儀錶板範本檔案。 繼續處理 遷移警告,這些警告將範本的佔位符值標記為資料庫和工作區 ID。
範本檔案會以多個磚填入儀錶板,不過磚無法取得數據,因為尚未連線數據源。
從 [ 管理] 索引標籤中,選取 [數據源]。 此動作會開啟 [ 數據源 ] 窗格,其中包含您數據的範例來源。 選取 教程數據源 的編輯圖示。
在 [資料庫] 底下,選取下拉式箭號和 [KQL 資料庫]。 選取 Tutorial KQL 資料庫,然後選取 連線。 保留其他預設設定,選取 [ 套用],然後關閉 [資料來源 ] 窗格。
幾秒鐘之後,圖像會填入資料庫中的資料。
小提示
儀錶板會以 UTC 格式保留目前的時間,因此時間範圍選取器可能不符合您的當地時間。 如果您在磚塊中沒有看到資料,請展開時間範圍。
探索儀表板。 您可以使用每個磚上的 編輯 和 探索數據 圖示來檢視基礎查詢、實驗變更時間範圍篩選和其他磚選項,並嘗試新增您自己的新查詢和磚。
透過此視覺化,使用數位雙胞胎建構器(預覽)搭配 Real-Time Intelligence 的端對端教學課程已經完成。 您使用數位雙胞胎生成器將從 Real-Time Intelligence 串流來的範例巴士數據內容化,然後將您的本體數據投影到 Eventhouse,以通過 KQL 查詢和 Real-Time 儀錶板啟用進一步的深入分析。
相關內容
深入瞭解本教學課程中使用的 KQL 運算子: