Partilhar via


Utilize o agrupamento de dados no Fabric Data Warehouse

Aplica-se a:✅ endpoint de análise SQL e armazém de dados no Microsoft Fabric

O agrupamento de dados no Fabric Data Warehouse organiza os dados para um desempenho de consulta mais rápido e redução do uso de computação. Este tutorial percorre os passos para criar tabelas com clustering de dados, desde a criação de tabelas agrupadas até à verificação da sua eficácia.

Pré-requisitos

  • Uma conta de locatário do Microsoft Fabric com uma assinatura ativa.
  • Verifique se você tem um espaço de trabalho habilitado para Microsoft Fabric: crie um espaço de trabalho.
  • Certifique-se de que já criou um Armazém. Para criar um novo Armazém, consulte Criar um Armazém no Microsoft Fabric.
  • Compreensão básica de T-SQL e consulta de dados.

Importar dados de exemplo

Este tutorial utiliza o conjunto de dados de exemplo do NY Taxi. Para importar os dados do táxi de Nova Iorque para o seu armazém. Use o tutorial Carregar Dados de Exemplo para o Data Warehouse.

Crie uma tabela com agrupamento de dados

Para este tutorial, precisamos de duas cópias da tabela NYTaxi: a cópia regular da tabela importada do tutorial, e uma cópia que utiliza agregação de dados. Use o seguinte comando para criar uma nova tabela usando CREATE TABLE AS SELECT (CTAS), baseada na tabela original do NYTaxi:

CREATE TABLE nyctlc_With_DataClustering 
WITH (CLUSTER BY (lpepPickupDatetime)) 
AS SELECT * FROM nyctlc

Observação

O exemplo assume o nome da tabela atribuído ao conjunto de dados NY Taxi no tutorial "Carregar Dados de Exemplo para o Data Warehouse". Se usaste um nome diferente para a tua tabela, ajusta o comando para substituir nyctlc pelo nome da tua tabela.

Este comando cria uma cópia exata da tabela original do NYTaxi, mas com agrupamento de dados na lpepPickupDatetime coluna. De seguida, usamos esta coluna para fazer consultas.

Consultar dados

Execute uma consulta na tabela NYTaxi e repita exatamente a mesma consulta na tabela NYTaxi_With_DataClustering para comparação.

Observação

Para esta análise, é benéfico analisar o desempenho da cache fria de ambas as execuções – ou seja, sem usar as funcionalidades de cache do Fabric Data Warehouse. Por isso, execute cada consulta exatamente uma vez antes de analisar os resultados no Query Insights.

Usamos uma consulta SQL que é frequentemente repetida no Depósito. Esta consulta calcula o valor médio da tarifa por ano entre as datas 2008-12-31 e 2014-06-30:

SELECT
    YEAR(lpepPickupDatetime), 
    AVG(fareAmount) as [Average Fare]
FROM 
    NYTaxi
WHERE 
    lpepPickupDatetime BETWEEN '2008-12-31' AND '2014-06-30'
GROUP BY 
    YEAR(lpepPickupDatetime)
ORDER BY 
    YEAR(lpepPickupDatetime) DESC
OPTION (LABEL = 'Regular');

Observação

A opção de rótulo usada nesta consulta é útil quando comparamos os detalhes da consulta da Regular tabela com a que utiliza clustering de dados mais tarde, usando as vistas Query Insights.

De seguida, repetimos exatamente a mesma consulta, mas na versão da tabela que utiliza agrupamento de dados:

SELECT 
    YEAR(lpepPickupDatetime), 
    AVG(fareAmount) as [Average Fare]
FROM 
    NYTaxi_With_DataClustering
WHERE 
    lpepPickupDatetime BETWEEN '2008-12-31' AND '2014-06-30'
GROUP BY 
    YEAR(lpepPickupDatetime)
ORDER BY 
    YEAR(lpepPickupDatetime) DESC
OPTION (LABEL = 'Clustered');

A segunda consulta usa o rótulo Clustered para nos permitir identificar esta consulta mais tarde com o Query Insights.

Verifique a eficácia do agrupamento de dados

Depois de configurar o clustering, pode avaliar a sua eficácia usando o Query Insights. O Insight de Consultas no Fabric Data Warehouse recolhe dados históricos de execução de consultas e agrega-os em insights acionáveis, como identificar consultas de longa duração ou frequentemente executadas.

Neste caso, usamos o Query Insights para comparar a diferença nos dados analisados entre os casos regulares e os clusterizados.

Utilize a seguinte consulta:

SELECT 
    label, 
    submit_time, 
    row_count,
    total_elapsed_time_ms, 
    allocated_cpu_time_ms, 
    result_cache_hit, 
    data_scanned_disk_mb, 
    data_scanned_memory_mb, 
    data_scanned_remote_storage_mb, 
    command 
FROM 
    queryinsights.exec_requests_history 
WHERE 
    command LIKE '%NYTaxi%' 
    AND label IN ('Regular','Clustered')
ORDER BY 
    submit_time DESC;

Esta consulta recolhe detalhes da exec_requests_history vista. Para mais informações, consulte queryinsights.exec_requests_history (Transact-SQL).

A consulta filtra os resultados das seguintes formas:

  • Busca apenas linhas que contenham o NYTaxi texto no nome do comando (como foi usado nas consultas de teste)
  • Busca apenas linhas onde o valor do rótulo era regular ou agrupado

Observação

Pode demorar alguns minutos até que os detalhes da sua consulta fiquem disponíveis no Query Insights. Se a sua consulta Query Insights não devolver resultados, tente novamente após alguns minutos.

Ao executar esta consulta, observamos os seguintes resultados:

Tabela que compara métricas de execução de consultas para duas etiquetas: Clustered e Regular. A consulta Regular utilizava mais recursos.

Ambas as consultas têm um número de linhas de 6 e tempos de submissão semelhantes. A Clustered consulta mostra total_elapsed_time_ms de 1794, allocated_cpu_time_ms de 1676 e data_scanned_remote_storage_mb de 77.519. A Regular consulta mostra total_elapsed_time_ms 2651, allocated_cpu_time_ms 2600 e data_scanned_remote_storage_mb 177,700. Estes números demonstram que, embora ambas as consultas tenham retornado os mesmos resultados, a Clustered versão utilizou aproximadamente 36% menos tempo de CPU do que a Regular versão e digitalizou cerca de 56% menos dados no disco. Nenhuma cache foi usada em nenhuma das execuções de consulta. Estes são resultados significativos para ajudar a reduzir o tempo de execução da consulta e o consumo de consultas, tornando a lpepPickupDatetime coluna uma forte candidata para clusterização de dados.

Observação

Esta é uma tabela pequena, com aproximadamente 76 milhões de linhas e 2GB de volume de dados. Embora esta consulta devolva apenas seis linhas na sua agregação (uma para cada ano no intervalo), ela analisa aproximadamente 8,3 milhões de linhas no intervalo de datas fornecido antes de os resultados serem agregados. Dados reais de produção com volumes de dados maiores podem fornecer resultados mais significativos. Os seus resultados podem variar consoante o tamanho da capacidade, os resultados em cache ou a concorrência durante as consultas.