pivot 外掛程式
適用於: ✅Microsoft網狀架構✅Azure 數據總管
將輸入數據表中一個數據行的唯一值轉換成輸出數據表中的多個數據行,並視需要對出現在最終輸出中的任何剩餘數據行值執行匯總,以旋轉數據表。
注意
如果未指定 OutputSchema,外掛程式的 pivot
輸出架構會以輸入數據為基礎。 因此,使用不同數據輸入的外掛程式多次執行,可能會產生不同的輸出架構。 這也表示參考未封裝數據行的查詢隨時可能會變成「中斷」。 基於這個理由,不建議將此外掛程式用於自動化作業,而不需指定 OutputSchema 函式。
語法
T | evaluate pivot(
pivotColumn aggregationFunction] [,
column1[,
column2 ... ]])
[:
OutputSchema][,
深入瞭解 語法慣例。
參數
姓名 | 類型 | 必要 | 描述 |
---|---|---|---|
pivotColumn | string |
✔️ | 要旋轉的數據行。 這個數據列中的每個唯一值都會是輸出數據表中的數據行。 |
aggregationFunction | string |
聚合函數,用來將輸入數據表中的多個數據列匯總至輸出數據表中的單一數據列。 目前支援的函式:min() 、、take_any() sum() avg() dcount() stdev() max() 、、、variance() 、make_list() 、、、 。 make_set() count() make_bag() 預設值為 count() 。 |
|
column1、 column2、 ... | string |
數據行名稱或以逗號分隔的數據行名稱清單。 輸出數據表會包含每個指定數據行的額外數據列。 預設值是樞紐數據行和匯總數據行以外的所有數據行。 | |
OutputSchema | 外掛程式輸出之預期 pivot 數據行的名稱和類型。語法: ( ColumnName : ColumnType [, ...]) 指定預期的架構,不需要先執行實際的查詢來探索架構,即可優化查詢執行。 如果運行時間架構不符合 OutputSchema 架構,就會引發錯誤。 |
傳回
Pivot 會傳回具有指定數據行的旋轉數據表 (column1, column2, ...) 加上樞紐數據行的所有唯一值。 樞紐數據行的每個數據格都會包含聚合函數計算。
範例
依數據行樞紐
針對以 『AL』 開頭的每個 EventType 和 State,計算此狀態中此類型事件的數目。
StormEvents
| project State, EventType
| where State startswith "AL"
| where EventType has "Wind"
| evaluate pivot(State)
輸出
EventType | 阿拉巴馬州 | 阿拉斯加州 |
---|---|---|
雷暴風 | 352 | 1 |
強風 | 0 | 95 |
極端冷/風寒 | 0 | 10 |
強風 | 22 | 0 |
使用聚合函數的數據行樞紐
針對從 『AR』 開始的每個 EventType 和 State,顯示直接死亡總數。
StormEvents
| where State startswith "AR"
| project State, EventType, DeathsDirect
| where DeathsDirect > 0
| evaluate pivot(State, sum(DeathsDirect))
輸出
EventType | 阿肯色州 | 亞利桑那州 |
---|---|---|
大雨 | 1 | 0 |
雷暴風 | 1 | 0 |
Lightning | 0 | 1 |
暴洪 | 0 | 6 |
強風 | 1 | 0 |
熱度 | 3 | 0 |
使用聚合函數和單一額外數據行來樞紐分析數據行
結果與上一個範例相同。
StormEvents
| where State startswith "AR"
| project State, EventType, DeathsDirect
| where DeathsDirect > 0
| evaluate pivot(State, sum(DeathsDirect), EventType)
輸出
EventType | 阿肯色州 | 亞利桑那州 |
---|---|---|
大雨 | 1 | 0 |
雷暴風 | 1 | 0 |
Lightning | 0 | 1 |
暴洪 | 0 | 6 |
強風 | 1 | 0 |
熱度 | 3 | 0 |
指定樞紐數據行、聚合函數和多個其他數據行
針對每個事件類型、來源和狀態,加總直接死亡的數目。
StormEvents
| where State startswith "AR"
| where DeathsDirect > 0
| evaluate pivot(State, sum(DeathsDirect), EventType, Source)
輸出
EventType | 來源 | 阿肯色州 | 亞利桑那州 |
---|---|---|---|
大雨 | 緊急經理 | 1 | 0 |
雷暴風 | 緊急經理 | 1 | 0 |
Lightning | 報紙 | 0 | 1 |
暴洪 | 訓練的Spotter | 0 | 2 |
暴洪 | 廣播媒體 | 0 | 3 |
暴洪 | 報紙 | 0 | 1 |
強風 | 執法 | 1 | 0 |
熱度 | 報紙 | 3 | 0 |
使用查詢定義的輸出架構進行樞紐分析
下列範例會選取 StormEvents 數據表中的特定數據行。 它會使用明確的架構定義,允許在執行實際查詢之前評估各種優化。
StormEvents
| project State, EventType
| where EventType has "Wind"
| evaluate pivot(State): (EventType:string, ALABAMA:long, ALASKA:long)
輸出
EventType | 阿拉巴馬州 | 阿拉斯加州 |
---|---|---|
雷暴風 | 352 | 1 |
強風 | 0 | 95 |
海洋雷雨風 | 0 | 0 |
強風 | 22 | 0 |
極端冷/風寒 | 0 | 10 |
冷/風冷 | 0 | 0 |
海洋強風 | 0 | 0 |
海洋高風 | 0 | 0 |