Share via


Plug-in diffpatterns

Compara dois conjuntos de dados da mesma estrutura e localiza padrões de atributos discretos (dimensões) que caracterizam diferenças entre os dois conjuntos de dados. O plug-in é invocado com o evaluate operador .

diffpatterns foi desenvolvido para ajudar a analisar falhas (por exemplo, comparando falhas com falhas em um determinado período), mas pode encontrar diferenças entre dois conjuntos de dados da mesma estrutura.

Observação

diffpatterns tem como objetivo encontrar padrões significativos (que capturam partes da diferença de dados entre os conjuntos) e não se destinam a diferenças linha a linha.

Syntax

T | evaluate diffpatterns(Splitcolumn,SplitValueA,SplitValueB [,WeightColumn,Threshold,MaxDimensions,CustomWildcard, ...])

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Obrigatório Descrição
Splitcolumn string ✔️ O nome da coluna que informa ao algoritmo como dividir a consulta em conjuntos de dados. De acordo com os valores especificados para os argumentos SplitValueA e SplitValueB , o algoritmo divide a consulta em dois conjuntos de dados, "A" e "B", e analisa as diferenças entre eles. Como tal, a coluna de divisão deve ter pelo menos dois valores distintos.
SplitValueA string ✔️ Uma representação de cadeia de caracteres de um dos valores no SplitColumn que foi especificado. Todas as linhas que têm esse valor em seu SplitColumn são consideradas como conjunto de dados "A".
SplitValueB string ✔️ Uma representação de cadeia de caracteres de um dos valores no SplitColumn que foi especificado. Todas as linhas que têm esse valor em seu SplitColumn são consideradas como conjunto de dados "B".
WeightColumn string A coluna usada para considerar cada linha na entrada de acordo com o peso especificado. Deve ser um nome de uma coluna numérica, como int, long, real. Por padrão, cada linha tem o peso igual a "1". Para usar o valor padrão, insira o bloco: ~. Um uso comum de uma coluna de peso é para amostragem de conta ou agregação/segmentação de dados já incorporados a cada linha.

Exemplo: T | extend splitColumn= iff(request_responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", sample_Count)
Limite long Um longo no intervalo de 0,015 a 1. Esse valor define a diferença de taxa de padrão mínima entre os dois conjuntos. O padrão é 0,05. Para usar o valor padrão, insira o bloco: ~.

Exemplo: T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", 0.04)
MaxDimensions int Define o número máximo de dimensões não relacionadas por padrão de resultado. Ao especificar um limite, você diminui o runtime de consulta. O padrão é ilimitado. Para usar o valor padrão, insira o bloco: ~.

Exemplo: T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", "~", 3)
CustomWildcard string Define o valor do curinga como um tipo específico na tabela de resultados, que indicará que o padrão atual não tem uma restrição para essa coluna. O padrão é nulo, exceto para colunas de cadeia de caracteres para as quais o padrão é uma cadeia de caracteres vazia. Se o padrão for um valor viável nos dados, um valor curinga diferente deverá ser usado. Por exemplo, *. Para usar o valor padrão, insira o bloco: ~.

Exemplo: T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", "~", "~", int(-1), double(-1), long(0), datetime(1900-1-1))

Retornos

diffpatterns retorna um pequeno conjunto de padrões que capturam diferentes partes dos dados nos dois conjuntos (ou seja, um padrão capturando uma grande porcentagem das linhas no primeiro conjunto de dados e baixa porcentagem das linhas no segundo conjunto). Cada padrão é representado por uma linha nos resultados.

O resultado de diffpatterns retorna as seguintes colunas:

  • SegmentId: a identidade atribuída ao padrão na consulta atual (observação: não há garantia de que as IDs sejam as mesmas em consultas repetidas).

  • CountA: o número de linhas capturadas pelo padrão em Set A (Set A é o equivalente a where tostring(splitColumn) == SplitValueA).

  • CountB: o número de linhas capturadas pelo padrão no Conjunto B (o conjunto B é o equivalente a where tostring(splitColumn) == SplitValueB).

  • PercentA: o percentual de linhas no Conjunto A capturado pelo padrão (100,0 * CountA / count(SetA)).

  • PercentB: o percentual de linhas no Conjunto B capturado pelo padrão (100,0 * CountB/ count(SetB)).

  • PercentDiffAB: a diferença absoluta de ponto percentual entre A e B (|PercentA - PercentB|) é a medida main de significância dos padrões na descrição da diferença entre os dois conjuntos.

  • Rest of the columns: are the original schema of the input and describe the pattern, each row (pattern) represents the intersection of the non-wildcard values of the columns (equivalente de where col1==val1 and col2==val2 and ... colN=valN for each non-wildcard value in the row).

Para cada padrão, as colunas que não são definidas no padrão (ou seja, sem restrição em um valor específico) conterão um valor curinga, que é nulo por padrão. Veja na seção Argumentos abaixo como curingas podem ser alterados manualmente.

  • Observação: os padrões geralmente não são distintos. Eles podem estar sobrepostos e, geralmente, não abrangem todas as linhas originais. Nem todas as linhas podem ficar em qualquer padrão.

Dica

  • Use onde e projeto no pipe de entrada para reduzir os dados exatamente no que você está interessado.
  • Quando você encontrar uma linha interessante, talvez queira se aprofundar ainda mais adicionando seus valores específicos ao filtro where .

Exemplo

StormEvents 
| where monthofyear(StartTime) == 5
| extend Damage = iff(DamageCrops + DamageProperty > 0 , 1 , 0)
| project State , EventType , Source , Damage, DamageCrops
| evaluate diffpatterns(Damage, "0", "1" )

Saída

SegmentId CountA CountB PercentA PercentB PercentDiffAB Estado EventType Source DamageCrops
0 2278 93 49.8 7.1 42.7 Granizo 0
1 779 512 17.03 39.08 22.05 Thunderstorm Wind
2 1098 118 24.01 9.01 15 Spotter Treinado 0
3 136 158 2,97 12.06 9.09 Jornal
4 359 214 7.85 16.34 8.49 Saturação de Flash
5 50 122 1.09 9.31 8.22 IOWA
6 655 279 14.32 21.3 6.98 Aplicação da lei
7 150 117 3.28 8.93 5.65 Saturação
8 362 176 7.91 13.44 5.52 Gerenciador de emergência