- 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> ... ] )' ] )
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.
Notas de uso¶
Todos os argumentos são cadeias de caracteres (ou seja, 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
, …).
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¶
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" : "(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 | | } | | } | +--------------------------------------------------------------+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
.