A função de mineração de padrões analisa amostras com múltiplos atributos com base em condições específicas. Ela identifica padrões distintos que afetam o particionamento dos dados e ajuda a identificar rapidamente as causas das diferenças entre as condições.
diff_patterns
Esta função compara dois conjuntos de dados com a mesma estrutura para identificar padrões de atributos discretos (dimensões) divergentes. O recurso foi projetado para comparar modelos (conjuntos de itens frequentes) em dados tabulares.
Sintaxe
diff_patterns($TABLE, $HEADER, $SPLIT_COLUMN, $TEST_VAL, $CONTROL_VAL, $METRIC_COLUMN, $WEIGHT_COLUMN, $PARAM)
Parâmetros
Ao usar a função de estatísticas de diferença de padrões, garanta que $SPLIT_COLUMN contenha linhas tanto para $TEST_VAL quanto para $CONTROL_VAL. A comparação falhará se faltarem dados do grupo de teste ou do grupo de controle.
Parâmetro | Tipo de dados | Obrigatório | Descrição |
$TABLE | row<array<T>, array<E>, ..., array<F>> | Sim | Tabela de entrada da função diff_patterns. Cada coluna representa uma dimensão para análise detalhada. |
$HEADER | array<varchar> | Sim | Nomes das colunas correspondentes em $TABLE. A quantidade de nomes no cabeçalho deve ser igual ao número de colunas da tabela. |
$SPLIT_COLUMN | varchar | Sim | Nome da coluna alvo usada para distinguir os grupos. Atualmente, a categoria de tag suporta apenas o tipo string. |
$TEST_VAL | varchar | Sim | Valor em $SPLIT_COLUMN correspondente ao grupo de teste. Garanta que $TEST_VAL exista em $SPLIT_COLUMN. Caso contrário, não será possível distinguir os dois grupos. Geralmente, $TEST_VAL corresponde a um valor anômalo. |
$CONTROL_VAL | varchar | Sim | Valor em $SPLIT_COLUMN correspondente ao grupo de controle. Garanta que $CONTROL_VAL exista em $SPLIT_COLUMN. Caso contrário, não será possível distinguir os dois grupos. $CONTROL_VAL corresponde a um valor normal. |
$METRIC_COLUMN | double/int | Não | Coluna de métrica. O valor padrão é Para analisar o impacto das combinações de dimensões sobre uma métrica específica além dos grupos de dados, especifique uma coluna de métrica. Por exemplo, se uma coluna 'qps' registrar sua métrica, o algoritmo poderá calcular as diferenças nessa métrica para várias combinações de dimensões. |
$WEIGHT_COLUMN | varchar | Não | Coluna de peso. O valor padrão é '', indicando que nenhuma coluna de peso foi especificada. Se este parâmetro não for definido, todas as linhas terão o mesmo peso. Quando uma coluna de peso é configurada, todos os cálculos consideram esses pesos. Por exemplo, uma linha com peso 2 é tratada como se aparecesse duas vezes em comparação com linhas de peso 1. |
$PARAM | varchar | Não | Para mais informações, consulte detalhes do parâmetro param. |
Detalhes do parâmetro param
|
Parâmetro |
Descrição |
Tipo |
Obrigatório |
Padrão |
Valores válidos |
|
minimum_support_fraction |
Suporte mínimo de um padrão de saída no grupo de teste. Por exemplo, se um padrão aparecer com frequência de 0,1 no grupo de teste, seu suporte será 0,1. Este parâmetro controla a quantidade de padrões de saída ajustando a sensibilidade. |
double |
Não |
0,05 |
(0, 1) |
|
allow_sample |
Defina se a amostragem é permitida nos cálculos. |
bool |
Não |
true |
[true, false] |
|
agg_op |
Um padrão filtra múltiplas linhas de dados. Em seguida, a função calcula o valor agregado dessas linhas na METRIC_COLUMN. Este parâmetro especifica a operação de agregação a ser usada. Se METRIC_COLUMN não for especificada, o valor padrão é 1 para o grupo de teste e 0 para o grupo de controle. |
string |
Não |
"avg" |
["sum", "avg", "max", "min", "count", "p95"] |
|
shapley_value_min_fraction |
Fração mínima do valor de Shapley para uma condição. Este parâmetro controla o número de condições em um padrão. |
double |
Não |
0,1 |
(0, 1) |
Exemplos
-
Análise de consulta:
A flag
set session enable_remote_functions=trueé necessária porque este recurso está em preview público. Adicione essa flag manualmente. Esse requisito será removido em versões futuras.* | set session enable_remote_functions=true ; with t0 as (select JSON_EXTRACT_SCALAR(entity, '$.platform') AS platform, JSON_EXTRACT_SCALAR(entity, '$.region') AS region, cast(value as double) as value, if((value > 100), 'true', 'false') as anomaly_label from log), t1 as ( select array_agg(platform) as platform, array_agg(region) as region, array_agg(anomaly_label) as anomaly_label, array_agg(value) as value from t0), t2 as (select row(platform, region, anomaly_label, value) as table_row from t1), t3 as (select diff_patterns(table_row, ARRAY['platform', 'region', 'anomaly_label', 'value'],'anomaly_label', 'true', 'false', 'value') as ret from t2) select * from t3 -
Saídas:
[["\"platform\"='Amazon Prime'","\"platform\"='Console'","\"platform\"='VR'","\"platform\"='Mobile'","\"platform\"='PC'","\"platform\"='Hulu'","\"platform\"='Netflix' AND \"region\"='Asia'","\"platform\"='YouTube'","\"platform\"='Disney+' AND \"region\"='South America'"],[18720,56921,44516,47520,44640,8640,4320,15840,4320],[0,4999,7324,5760,4320,0,0,1440,0],[0.05248902272841978,0.15960083668399478,0.12481844742405635,0.13324136538752713,0.1251661311216164,0.024225702797732206,0.012112851398866103,0.04441378846250904,0.012112851398866103],[0.0,0.0032988991351195829,0.004833194091941553,0.003801092022062172,0.0028508190165466289,0.0,0.0,0.000950273005515543,0.0],[0.05248902272841978,0.1563019375488752,0.1199852533321148,0.12944027336546497,0.12231531210506977,0.024225702797732206,0.012112851398866103,0.0434635154569935,0.012112851398866103],[608.6946996258738,552.6152340898742,501.3011076154948,525.0147121416072,580.8151715760738,409.282718625793,631.6115865793741,603.7699053925991,526.960199868643],[0.0,58.46518308219622,55.396758003518488,49.12926473747681,44.68946999270535,0.0,0.0,20.76262974302821,0.0],null]
Detalhes do valor de retorno
Parâmetro | Tipo | Descrição | Exemplo |
$RET.patterns | array<varchar> | Modelos da tabela correspondentes aos conjuntos de itens frequentes. |
|
$RET.test_supports | array<bigint> | Frequência do modelo correspondente no grupo de teste. |
|
$RET.control_supports | array<bigint> | Frequência do modelo correspondente no grupo de controle. Em comparação, os resultados exibidos primeiro na saída de diff_patterns têm frequência muito maior no grupo de teste (grupo anômalo) do que no grupo de controle (grupo normal). |
|
$RET.test_ratio | array<double> | Proporção do modelo correspondente no grupo de teste (label=1) em relação ao conjunto total de dados de teste. |
|
$RET.control_ratio | array<double> | Proporção do modelo correspondente no grupo de controle (label=0) em relação ao conjunto total de validação. |
|
$RET.difference | array<double> | Diferença entre os dados do grupo de teste e os dados do grupo de controle. |
|
$RET.test_average_metric | array<double> | Valor médio da METRIC_COLUMN para dados que correspondem ao padrão. Se METRIC_COLUMN for '', este valor de retorno não tem significado. |
|
$RET.control_average_metric | array<double> | Valor médio da METRIC_COLUMN para dados que não correspondem ao padrão. Se METRIC_COLUMN for '', este valor de retorno não tem significado. |
|
$RET.error_msg | varchar/null | Mensagem de erro. Se nenhum erro ocorrer, o valor de retorno será |
|