Agregações automáticas (auto-aggs) podem otimizar o DirectQuery

por | 17/10/2023 | Novidades Power BI, Power BI

Tempo de leitura: 12 minutos

Você sabia que agora, com apenas um clique no botão do mouse, os criadores de conjuntos de dados do Power BI – com qualquer nível de habilidade – podem melhorar o desempenho de um conjunto de dados DirectQuery? Para começar, acesse o portal Power BI, exiba as configurações de um conjunto de dados DirectQuery, expanda a seção Atualização Agendada e Otimização de Desempenho e alterne a opção de Treinamento Agregações Automáticas para Ativado (como na captura de tela a seguir). Mas não se esqueça de configurar uma agenda de atualização de dados para atualizar suas agregações regularmente.

Inicialmente, isso é basicamente tudo que você precisa saber fazer.

Quer obter mais informações sobre como as agregações automáticas podem ajudar a melhorar o desempenho das visualizações de relatório? Consulte Visão Geral das Agregações Automáticas na documentação do produto.

E quando as agregações automáticas não funcionam?

Quando você habilita agregações automáticas (auto aggs), você acaba sem agregações e sem ganhos de desempenho correspondentes. Nessas situações problemáticas, pode ser útil ter mais controle sobre o processo do que sobre a interface do usuário fornece. O controle granular permite ajustar os aggs automáticos.

Você pode excluir tabelas específicas definindo um limite de tamanho mínimo abaixo do qual você não deseja gerar aggs automáticos. Ou talvez você queira testar o treinamento de auto-aggs com definições de configuração diferentes e verificar se o Power BI realmente adicionou aggs automáticos ao seu conjunto de dados.

O TOM (Tabular Object Model) e o TMSL (Tabular Model Scripting Language) oferecem as opções avançadas para cobrir esses cenários, conforme explicado neste artigo.

Como desenvolvedores de BI podem utilizar aggs?

Se você for um desenvolvedor de BI e quiser seguir o aplicativo de console .NET Core usado neste artigo em seu próprio ambiente, consulte o código de exemplo TOM anexado para obter detalhes.

Certifique-se de usar as bibliotecas de cliente mais recentes do Analysis Services e hospedar seu conjunto de dados em uma capacidade Premium ou de malha com XMLA Leitura/Gravação habilitada. Se você preferir trabalhar com TMSL, mantenha a instalação do SQL Server Management Studio (SSMS) na versão mais recente.

Mas se você não for um desenvolvedor de BI, ainda poderá achar útil a seguinte orientação de solução de problemas. Então, vamos analisar rapidamente como as agregações automáticas funcionam antes de nos aprofundarmos em vários cenários e trechos de código.

Para que o auto aggs funcione, você deve realizar as três tarefas essenciais a seguir:

  1. Gerar consultas DAX. Você precisa usar relatórios ou outros meios para consultar seu conjunto de dados porque o processo de geração de agregações automáticas depende de um log de consulta que controla as consultas enviadas ao conjunto de dados ao longo de sete dias. Como ilustra o diagrama abaixo, o log de consultas serve como entrada para o treinamento de auto aggs. Então, como um pré-requisito para gerar auto aggs, certifique-se de semear o log de consulta!
  2. Execute o treinamento de agregações automáticas. O treinamento de aggs automático é o processo que gera as tabelas aggs gerenciadas pelo sistema no conjunto de dados. Esse processo analisa o log de consultas, bem como a cardinalidade e outras características das colunas da tabela de origem. Esse processo normalmente é executado no horário de atualização do conjunto de dados durante a primeira atualização do dia, mas você também pode acionar o treinamento de auto-aggs manual e programaticamente.
  3. Execute uma atualização de dados. Lembre-se de que o treinamento auto-aggs gera apenas as tabelas aggs e as adiciona ao conjunto de dados, mas não preenche essas tabelas com dados. Carregar os dados aggs é o trabalho da atualização de dados, portanto, não se esqueça de atualizar seu conjunto de dados e configurar a atualização agendada para manter os dados aggs atualizados. Só então você verá uma melhoria de perf de consulta para tabelas DirectQuery qualificadas.

Resolvendo problemas no auto aggs do Power BI.

Com o básico coberto, vamos agora mergulhar em um cenário comum de solução de problemas: você habilitou o auto aggs, mas não percebe nenhum ganho de perf.

Nessa situação, um bom primeiro passo é verificar se você realmente tem tabelas aggs em seu conjunto de dados.

Talvez o Power BI não tenha gerado nenhum porquê simplesmente não havia dados de entrada significativos no log de consulta, ou talvez o conjunto de dados ainda não tenha sido atualizado para que o treinamento nunca tenha sido executado, ou talvez o treinamento não tenha terminado dentro do limite de tempo de 1 hora, o que significa que o treinamento ainda não foi concluído e será retomado no dia seguinte.

O treinamento de aggs automático pode levar muito tempo, dependendo da velocidade com que a fonte de dados pode processar as consultas de cardinalidade e outras consultas que o Power BI gera durante a fase de treinamento. Seja qual for o motivo, se não houver tabelas aggs no conjunto de dados, suas consultas DAX não poderão aproveitar agregações, é claro.

As tabelas Aggs são relativamente fáceis de detectar no SSMS. Conecte-se ao seu espaço de trabalho, expanda seu conjunto de dados DirectQuery e procure tabelas com GUIDs como seus nomes. A captura de tela a seguir mostra uma dessas tabelas aggs chamada b83b1a0c-5712-4f35-8d73-d1db0a0c6c33. Depois de criar scripts dessa tabela, você pode ver que ela é uma tabela oculta gerenciada pelo sistema com uma fonte de partição inferida.

No código gerenciado usando TOM, é igualmente descomplicado verificar se há tabelas aggs. Consulte o trecho de código a seguir. Como mencionado anteriormente, o código de exemplo TOM está anexado a este artigo.

Vamos continuar nossa jornada de solução de problemas e assumir que o conjunto de dados ainda não tem tabelas auto-aggs. Uma próxima pergunta lógica pode ser se os auto-aggs estão habilitados. Agora, você pode ficar tentado a procurar configurações de auto-aggs no conjunto de dados.

Por exemplo, você pode verificar a propriedade AutomaticAggregationOptions do objeto Model. No entanto, observe que o Power BI não armazena suas configurações de auto-aggs nos metadados do modelo. A captura de tela a seguir ilustra esse aspecto. O proprietário do conjunto de dados habilitou aggs automáticos no Power BI, mas não há AutomaticAggregationOptions no modelo. As configurações de auto-aggs que o Power BI usa só estão disponíveis na página de configurações do conjunto de dados.

Então, qual é a finalidade da propriedade AutomaticAggregationOptions se o Power BI não a usar? Sua finalidade é armazenar uma configuração padrão de auto-aggs que você pode aplicar programaticamente ao treinamento de auto-aggs usando o método ApplyAutomaticAggregations. O Power BI não usa essa propriedade, mas soluções personalizadas podem.

Em vez de usar uma configuração padrão de auto-aggs, você também pode fornecer um objeto AutomaticAggregationOptions explícito como um parâmetro de entrada para o método ApplyAutomaticAggregations. Esse é o método que o Power BI usa para enviar suas próprias definições de configuração. E este é o método que permite acionar fácil e rapidamente o treinamento de auto-aggs com diferentes definições de configuração também. O código de trecho a seguir ilustra essa abordagem.

Consulte a classe AutomaticAggregationOptions na documentação da API para obter detalhes sobre as propriedades com suporte, como QueryCoverage, DetailTableMinRows e AggregationTableSizeLimit.

Chamar o método ApplyAutomaticAggregations acima é tudo o que é necessário para acionar o treinamento auto-aggs. Talvez o treino nunca tenha ocorrido antes. No entanto, não se esqueça da chamada de atualização do banco de dados para manter todas as tabelas aggs geradas no conjunto de dados.

Ainda assim, mesmo uma conclusão bem-sucedida do método ApplyAutomaticAggregations não é garantia de que o treinamento auto-aggs realmente gerou tabelas aggs. Como mencionado várias vezes, o log de consulta pode estar vazio, então o treinamento de auto-aggs apenas “com sucesso” descobre que não há aggs para gerar. Ou o treinamento auto-aggs levou mais de 1 hora. Nesse caso, você pode realizar o treinamento repetidamente até que ele termine. O treinamento é incremental e retoma de onde o ciclo anterior parou.

Basta treinar, treinar, treinar e, quando o treinamento da aggs for finalmente concluído, executar uma única operação de atualização de dados.

No entanto, como você decide que o treinamento de aggs está concluído? Para isso, você deve capturar o status de treinamento gerado em um evento de rastreamento AutoAggsTraining – Progress Report End. Isso talvez seja mais facilmente realizado usando o SQL Profiler. Certifique-se de incluir pelo menos a classe de evento Progress Report End no rastreamento. O rastreamento a seguir inclui um evento AutoAggsTraining – Progress Report End com algumas informações importantes:

  • aggregationTableCount é 0, portanto, nenhuma tabela aggs foi gerada.
  • queryShapes.eligible é 0, o que significa, neste caso específico, que o treinamento de auto-aggs não encontrou nenhuma consulta útil no log de consultas.
  • queryShapes.discarded está vazio porque o log de consulta estava vazio para começar, mas se houvesse formas de consulta descartadas, a propriedade descartada incluiria um ou mais dos seguintes contadores:
BalcãoComentários
DroppedByUserAs formas de consulta foram descartadas porque a(s) tabela(s) consultada(s) não existem mais no conjunto de dados.
Modo de importaçãoAs formas de consulta foram descartadas porque a(s) tabela(s) consultada(s) está(ão) no modo de importação, que os aggs automáticos não cobrem.
Relacionamento LimitadoAs formas de consulta foram descartadas devido a uma relação limitada entre a(s) tabela(s) consultada(s).
Incompatibilidade de RelacionamentoAs formas de consulta foram descartadas devido a uma incompatibilidade de relacionamento entre a(s) tabela(s) consultada(s).
CalculatedColumnAs formas de consulta foram descartadas porque a(s) tabela(s) consultada(s) têm(ão) colunas calculadas, o que não é suportado.
DualRootTableAs formas de consulta foram descartadas porque a(s) tabela(s) consultada(s) está(ão) no modo duplo, que os aggs automáticos não cobrem.
TableExcludedByUserAs formas de consulta foram descartadas porque a(s) tabela(s) consultada(s) são(ão) explicitamente excluída(s) pelo usuário.
Sem suporteMDataSourceAs formas de consulta foram descartadas porque a(s) tabela(s) consultada(s) usa(m) fontes de dados M sem suporte.
UnsupportedNativeDataSourceAs formas de consulta foram descartadas porque a(s) tabela(s) consultada(s) usa(m) fonte de dados nativa sem suporte.
SSOEnabledAs formas de consulta foram descartadas porque a(s) tabela(s) consultada(s) usa(m) uma fonte de dados habilitada para SSO, o que não é suportado.
CardinalidadeEstimativaFalhaAs formas de consulta foram descartadas porque a estimativa de cardinalidade da(s) tabela(s) consultada(s) falhou.
GrandeSizeAggsAs formas de consulta foram descartadas porque o tamanho de agregação da(s) tabela(s) consultada(s) é muito grande.
TableTooSmallAs formas de consulta foram descartadas porque a(s) tabela(s) consultada(s) são(ão) muito pequenas para criar agregações.
EsquerdaDescobertoAs formas de consulta foram descartadas porque a(s) tabela(s) consultada(s) ficou(m) descoberta(s) devido a destinos de treinamento fornecidos pelo usuário.
DesconhecidoAs formas de consulta foram descartadas devido a falhas desconhecidas.

Você também pode criar um rastreamento progamado, como o código de exemplo TOM anexado demonstra e a captura de tela a seguir ilustra. Desta vez, existiam 77 formas de consulta qualificadas. Os relatórios do Power BI consultaram o conjunto de dados. E aggregationTableCount é 1, então o treinamento auto-aggs foi capaz de criar uma tabela aggs para esse conjunto de dados. Êxito!

Parabéns! Neste ponto, dominamos as duas primeiras tarefas essenciais de auto aggs. Geramos consultas DAX e realizamos treinamento auto-aggs, que adicionou uma tabela aggs gerenciada pelo sistema ao conjunto de dados. No entanto, a tabela aggs ainda não contém dados, como revela o resultado da consulta DAX na captura de tela a seguir. Para carregar os dados, devemos executar a atualização de dados usando qualquer uma das opções disponíveis (manual, agendada ou programática).

A próxima captura de tela mostra o aplicativo de console deste artigo executando uma atualização programática por meio do seguinte código TOM. Em seguida, o código de exemplo envia a consulta DAX acima para todas as tabelas aggs gerenciadas pelo sistema para contar suas linhas. Em conjuntos de dados de produção, provavelmente haveria muitas tabelas aggs e qualquer tabela aggs com dados reais pode ajudar a melhorar o desempenho do conjunto de dados DirectQuery.

E isso conclui esta pequena excursão em detalhes de processamento auto-aggs.

Espero que as explicações forneçam detalhes suficientes para dominar as situações mais comuns de solução de problemas. O código de exemplo também pode servir como um ponto de partida para uma solução personalizada para adicionar aggs automáticos ajustados aos modelos DirectQuery de BI corporativos.

Não hesite em baixar o código de exemplo TOM anexado e experimentar diferentes configurações AutomaticAggregationOptions. Por exemplo, você pode definir o parâmetro AggregationTableMaxRows ou o parâmetro DetailTableMinRows e ver por si mesmo como diferentes limites afetam a geração de suas tabelas aggs.

Fonte: Blog do Microsoft Power BI.

Autor do artigo original: Kay Unkroth.

Toda terça-feira o time de EXperts da DataEX apresenta informações relevantes sobre o Power BI e suas atualizações constantes. E para conhecer mais sobre nossos serviços e produtos, nos siga em nosso LinkedIn.

Construa uma nova jornada de análise de dados com o apoio de um time EXpert.

A DataEX tem o serviço ideal para transformar seus dados em tomadas de decisão certeiras. Com nosso time de especialistas você constrói uma jornada de dados estruturada e eficiente.

Preencha nosso formulário e nosso time vai te contar como isso é possível.

Ebook Data Driven Team - Cultura de Dados

E-book Data Driven Team

Conheça o processo que valoriza e incentiva o uso de dados nas tomadas de decisão cruciais do seu negócio.

Declaração de privacidade
Ebook Data Driven Team - Cultura de Dados

E-book Data Driven Team

Conheça o processo que valoriza e incentiva o uso de dados nas tomadas de decisão cruciais do seu negócio.

Veja mais artigos relacionados

DAX: Aprofunde-se na exibição de consultas e gravações

Em novembro de 2023 a Microsoft criou uma versão do Power BI Desktop que ganhou um quarto modo de...

Novo button slicer | Pré-visualização pública

A mais recente adição à nova experiência de segmentação de dados do Power BI – a segmentação de...

Função Explore no Power BI: Introdução

Explore visualização pública Introdução ao Explore No Power BI, muitas vezes os usuários precisam...

Datasets renomeados para modelos semânticos

Há 8 anos, a Microsoft anunciou a disponibilidade total do Power BI e capacitou analistas de...

Gateway de dados local versão de outubro de 2023

Aqui está a versão de outubro de 2023 do gateway de dados local (versão 3000.190.17). Aqui estão...

Nova API do Power BI está disponível

Introdução Em maio de 2023, a Microsoft apresentou o Fabric, uma solução de análise tudo-em-um...