diffpatterns 外掛程式
適用於: ✅Microsoft網狀架構✅Azure 數據總管
比較相同結構的兩個數據集,並尋找可描述兩個數據集之間差異之離散屬性(維度)的模式。 外掛程式是使用運算子叫 evaluate
用的。
diffpatterns
已開發來協助分析失敗(例如,藉由比較特定時間範圍內失敗與非失敗),但可能會發現相同結構的任何兩個數據集之間的差異。
注意
diffpatterns
旨在尋找重要的模式(擷取集合之間數據差異的部分),並非針對逐列差異。
語法
T | evaluate diffpatterns(
SplitColumn SplitValueA,
SplitValueB [,
WeightColumn,
Threshold,
MaxDimensions,
CustomWildcard,
...],
)
深入瞭解 語法慣例。
參數
姓名 | 類型 | 必要 | 描述 |
---|---|---|---|
SplitColumn | string |
✔️ | 數據行名稱,告知演算法如何將查詢分割成數據集。 根據 SplitValueA 和 SplitValueB 自變數的指定值,演算法會將查詢分割成兩個數據集 “A” 和 “B”,並分析兩者之間的差異。 因此,分割數據行必須至少有兩個相異值。 |
SplitValueA | string |
✔️ | 指定之 SplitColumn 中其中一個值的字串表示。 在 SplitColumn 中具有此值的所有數據列都視為資料集 “A”。 |
SplitValueB | string |
✔️ | 指定之 SplitColumn 中其中一個值的字串表示。 在 SplitColumn 中具有此值的所有數據列都會視為資料集 “B”。 |
WeightColumn | string |
根據指定的權數,用來考慮輸入中每個數據列的數據行。 必須是數值資料列的名稱,例如int 、 long real 。 根據預設,每個數據列的權數為 『1』。 若要使用預設值,請輸入tilde: ~ 。 加權數據行的常見用法是考慮已內嵌至每個數據列的數據取樣或貯體/匯總。範例: T | extend splitColumn= iff(request_responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", sample_Count) |
|
閾值 | real |
介於 0.015 到 1 範圍內的實值。 此值會設定兩組之間的最小模式比例差異。 預設值為 0.05。 若要使用預設值,請輸入tilde: ~ 。範例: T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", 0.04) |
|
MaxDimensions | int |
設定每個結果模式的不相關維度數目上限。 藉由指定限制,您可以減少查詢運行時間。 預設值為無限制。 若要使用預設值,請輸入tilde: ~ 。範例: T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", "~", 3) |
|
CustomWildcard | string |
設定結果數據表中特定類型的通配符值,指出目前模式對此數據行沒有限制。 預設值為 null,但預設值為空字串的字串數據行除外。 如果預設值是數據中的可行值,則應該使用不同的通配符值。 例如: * 。 若要使用預設值,請輸入tilde: ~ 。範例: T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", "~", "~", int(-1), double(-1), long(0), datetime(1900-1-1)) |
傳回
diffpatterns
會傳回一組小型模式,以擷取兩組中不同部分的數據(也就是說,模式會擷取第一個數據集中的大百分比數據列,以及第二組數據列的低百分比)。 每個模式都會以結果中的數據列來表示。
的結果 diffpatterns
會傳回下列數據行:
SegmentId:指派給目前查詢模式的身分識別(注意:重複查詢中不保證標識符相同)。
CountA:Set A 中模式所擷取的數據列數目(Set A 相當於
where tostring(splitColumn) == SplitValueA
)。CountB:Set B 中模式所擷取的數據列數目(Set B 相當於
where tostring(splitColumn) == SplitValueB
)。PercentA:模式所擷取之設定 A 中的數據列百分比(100.0 * CountA / count(SetA))。
PercentB:模式所擷取的 Set B 數據列百分比(100.0 * CountB /count(SetB))。
PercentDiffAB:A 與 B 之間的絕對百分比點差異(|PercentA - PercentB|)是描述兩組差異之模式意義的主要量值。
其餘的數據行:是輸入的原始架構,並描述模式,每個數據列(模式)都代表數據行的非通配符值交集(相當於
where col1==val1 and col2==val2 and ... colN=valN
數據列中每個非通配符值)。
針對每個模式,未在模式中設定的數據行(也就是不限制特定值)將包含預設為 null 的通配符值。 請參閱下列自變數一節中的通配符如何手動變更。
- 注意:模式通常不相異。 它們可能會重疊,而且通常不會涵蓋所有原始數據列。 某些數據列可能不屬於任何模式。
提示
- 使用 輸入管道中的 where 和 project ,將數據縮減為您感興趣的專案。
- 當您找到一個有趣的數據列時,您可能會想要將特定值新增至篩選,
where
進一步鑽研它。
範例
StormEvents
| where monthofyear(StartTime) == 5
| extend Damage = iff(DamageCrops + DamageProperty > 0 , 1 , 0)
| project State , EventType , Source , Damage, DamageCrops
| evaluate diffpatterns(Damage, "0", "1" )
輸出
SegmentId | CountA | CountB | PercentA | PercentB | PercentDiffAB | 州/省 | EventType | 來源 | DamageCrops |
---|---|---|---|---|---|---|---|---|---|
0 | 2278 | 93 | 49.8 | 7.1 | 42.7 | 冰雹 | 0 | ||
1 | 779 | 512 | 17.03 | 39.08 | 22.05 | 雷暴風 | |||
2 | 1098 | 118 | 24.01 | 9.01 | 15 | 訓練的Spotter | 0 | ||
3 | 136 | 158 | 2.97 | 12.06 | 9.09 | 報紙 | |||
4 | 359 | 214 | 7.85 | 16.34 | 8.49 | 暴洪 | |||
5 | 50 | 122 | 1.09 | 9.31 | 8.22 | 愛荷華州 | |||
6 | 655 | 279 | 14.32 | 21.3 | 6.98 | 執法 | |||
7 | 150 | 117 | 3.28 | 8.93 | 5.65 (機器翻譯) | 洪水 | |||
8 | 362 | 176 | 7.91 | 13.44 | 5.52 | 緊急經理 |