- Categorias:
Funções do sistema (Informações do sistema)
SYSTEM$CLUSTERING_INFORMATION¶
Retorna informações de clustering, incluindo profundidade média de clustering, para uma tabela baseada em uma ou mais colunas da tabela.
- Consulte também:
Sintaxe¶
SYSTEM$CLUSTERING_INFORMATION( '<table_name>'
[ , { '( <expr1> [ , <expr2> ... ] )' | <number_of_errors> } ] )
Argumentos¶
table_name
Tabela para a qual você deseja retornar informações de clustering.
(expr1 [ , expr2 ... ])
Nomes de colunas ou expressões para as quais as informações de clustering são retornadas:
Para uma tabela sem chave de clustering, este argumento é necessário. Se este argumento for omitido, um erro é devolvido.
Para uma tabela com uma chave de clustering, este argumento é opcional; se o argumento for omitido, o Snowflake usará a chave de clustering definida para retornar informações de clustering.
Mesmo que apenas um nome de coluna ou expressão seja passado, ele deve estar dentro de parênteses.
Nota
Você pode usar este argumento para retornar informações de clustering para qualquer coluna na tabela, independentemente de estar definida uma chave de clustering para a tabela.
Em outras palavras, você pode usar isto para ajudá-lo a decidir que clustering usar no futuro.
number_of_errors
Número de erros de clustering retornados pela função. Se este argumento for omitido, os 10 erros mais recentes serão retornados.
Notas de uso¶
O segundo argumento da função especifica uma expressão/nome de coluna ou vários erros. Você não pode incluir ambos os argumentos em uma única chamada de função.
O nome da tabela, o nome da coluna e a expressão são cadeias de caracteres e devem ser colocados entre aspas simples.
Saída¶
A função retorna um valor do tipo VARCHAR.
A cadeia de caracteres retornada está no formato JSON e contém os seguintes pares nome/valor:
cluster_by_keys
Colunas na tabela usadas para retornar informações de clustering; pode ser qualquer coluna na tabela.
notes
Esta coluna pode conter sugestões para tornar o clustering mais eficiente. Por exemplo, este campo pode conter um aviso se a cardinalidade da coluna de clustering for extremamente alta.
Esta coluna pode estar vazia.
Para obter mais informações sobre como clusterizar de forma eficiente, consulte Estratégias para a seleção de chaves de clustering.
total_partition_count
Número total de micropartições que compõem a tabela.
total_constant_partition_count
Número total de micropartições para as quais o valor das colunas especificadas atingiu um estado constante (ou seja, as micropartições não se beneficiarão significativamente do reclustering). O número de micropartições constantes em uma tabela tem um impacto na remoção para consultas. Quanto maior o número, mais micropartições podem ser removidas a partir de consultas executadas na tabela, o que tem um impacto correspondente no desempenho.
average_overlaps
Número médio de micropartições sobrepostas para cada micropartição da tabela. Um número alto indica que a tabela não está bem clusterizada.
average_depth
Profundidade média de sobreposição de cada micropartição da tabela. Um número alto indica que a tabela não está bem clusterizada.
Este valor também é devolvido por SYSTEM$CLUSTERING_DEPTH.
partition_depth_histogram
Um histograma descrevendo a distribuição da profundidade de sobreposição para cada micropartição da tabela. O histograma contém buckets com larguras:
0
a16
com incrementos de1
.Para buckets maiores que
16
, incrementos de duas vezes a largura do bucket anterior (por exemplo,32
,64
,128
, …).
clustering_errors
Uma matriz de objetos JSON, cada um com um par nome/valor
timestamp
eerror
. Oerror
descreve por que o clustering automático não conseguiu agrupar novamente os dados.Por padrão, os 10 erros mais recentes são retornados na matriz. Para retornar mais ou menos erros, especifique um número como segundo argumento da função.
Para obter mais informações sobre a sobreposição e profundidade das micropartições e seu impacto ao reduzir a consulta, consulte Explicação das estruturas de tabela do Snowflake.
Exemplos¶
Retorne os 5 erros de clustering mais recentes:
SELECT SYSTEM$CLUSTERING_INFORMATION('t1', 5);
Retornar as informações de clustering para uma tabela usando duas colunas na tabela:
SELECT SYSTEM$CLUSTERING_INFORMATION('test2', '(col1, col3)');+--------------------------------------------------------------------+ | SYSTEM$CLUSTERING_INFORMATION('TEST2', '(COL1, COL3)') | |--------------------------------------------------------------------| | { | | "cluster_by_keys" : "LINEAR(COL1, COL3)", | | "total_partition_count" : 1156, | | "total_constant_partition_count" : 0, | | "average_overlaps" : 117.5484, | | "average_depth" : 64.0701, | | "partition_depth_histogram" : { | | "00000" : 0, | | "00001" : 0, | | "00002" : 3, | | "00003" : 3, | | "00004" : 4, | | "00005" : 6, | | "00006" : 3, | | "00007" : 5, | | "00008" : 10, | | "00009" : 5, | | "00010" : 7, | | "00011" : 6, | | "00012" : 8, | | "00013" : 8, | | "00014" : 9, | | "00015" : 8, | | "00016" : 6, | | "00032" : 98, | | "00064" : 269, | | "00128" : 698 | | }, | | "clustering_errors" : [ { | | "timestamp" : "2023-04-03 17:50:42 +0000", | | "error" : "(003325) Clustering service has been disabled.\n" | | } | | ] | | } | +--------------------------------------------------------------------+Este exemplo indica que a tabela
test2
não é bem clusterizada pelas seguintes razões:
Micropartições de constante zero (
0
) de1156
micropartições totais.Média elevada de micropartições sobrepostas.
Média elevada de profundidade de sobreposição entre micropartições.
A maioria das micropartições está agrupada na parte inferior do histograma, com a maioria das micropartições tendo uma profundidade de sobreposição entre
64
e128
.O clustering automático foi desativado anteriormente.
Limitações¶
Se uma tabela tiver mais de 2 milhões de partições:
Os resultados da função são baseados em um subconjunto das partições da tabela.
O campo do valor da saída
total_partition_count
é de 2 milhões.