Sobre o uso do DirectQuery no Power BIAbout using DirectQuery in Power BI

Você pode se conectar a todos os tipos de fontes de dados diferentes ao usar o Power BI Desktop ou o serviço do Power BI e fazer essas conexões de dados de maneiras diferentes.You can connect to all sorts of different data sources when using Power BI Desktop or the Power BI service, and make those data connections in different ways. Você pode importar dados para o Power BI, que é a maneira mais comum de obter dados, ou conectar-se diretamente aos dados no repositório de origem original, que é conhecido como DirectQuery.You can import data to Power BI, which is the most common way to get data, or connect directly to data in the original source repository, which is known as DirectQuery. Este artigo descreve as funcionalidades do DirectQuery:This article describes DirectQuery capabilities:

  • Diferentes opções de conectividade para o DirectQueryDifferent connectivity options for DirectQuery
  • Orientação para quando você deve considerar o uso do DirectQuery em vez da importaçãoGuidance for when you should consider using DirectQuery rather than import
  • Desvantagens do uso do DirectQueryDrawbacks of using DirectQuery
  • Melhores práticas para o uso do DirectQueryBest practices for using DirectQuery

Siga as melhores práticas para usar a importação versus o DirectQuery:Follow best practices for using import versus DirectQuery:

  • Você deve importar dados para o Power BI sempre que possível.You should import data to Power BI wherever possible. A importação aproveita o mecanismo de consulta de alto desempenho do Power BI e proporciona uma experiência altamente interativa e completa.Importing takes advantage of the high performance query engine of Power BI, and provides a highly interactive and fully featured experience.
  • Caso as suas metas não possam ser atendidas com a importação de dados, considere o uso do DirectQuery.If your goals can't be met by importing data, consider using DirectQuery. Por exemplo, se os dados estão frequentemente em alteração e os relatórios devem refletir os dados mais recentes, o DirectQuery pode ser a melhor opção.For example, if the data is changing frequently and reports must reflect the latest data, DirectQuery may be best. No entanto, o uso do DirectQuery só é possível quando a fonte de dados subjacente pode fornecer consultas interativas, menos de 5 segundos para a consulta de agregação típica, e pode processar a carga de consulta que será gerada.However, using DirectQuery is only feasible when the underlying data source can provide interactive queries, less than 5 seconds for the typical aggregate query, and can handle the query load that will be generated. Além disso, a lista de limitações do uso do DirectQuery deve ser considerada cuidadosamente.Additionally, the list of limitations for the use of DirectQuery should be considered carefully.

O conjunto de funcionalidades oferecido pelo Power BI para a importação e o DirectQuery evoluirá ao longo do tempo.The set of capabilities offered by Power BI for import and DirectQuery evolve over time. As alterações incluirão o fornecimento de mais flexibilidade ao usar dados importados, de modo que a importação possa ser usada em mais casos, bem como a eliminação de algumas das desvantagens do uso do DirectQuery.Changes will include providing more flexibility when using imported data, such that import can be used in more cases and eliminating some of the drawbacks of using DirectQuery. Independentemente das melhorias, ao usar o DirectQuery, o desempenho da fonte de dados subjacente sempre é uma consideração importante.Regardless of improvements, when using DirectQuery, the performance of the underlying data source always remains a major consideration. Se essa fonte de dados subjacente estiver lenta, o uso do DirectQuery nessa fonte ficará impraticável.If that underlying data source is slow, using DirectQuery for that source will remain unfeasible.

Este artigo aborda o DirectQuery com o Power BI, não o SQL Server Analysis Services.This article covers DirectQuery with Power BI, and not SQL Server Analysis Services. O DirectQuery também é um recurso do SQL Server Analysis Services.DirectQuery is also a feature of SQL Server Analysis Services. Muitos dos detalhes descritos neste artigo se aplicam a esse recurso.Many of the details described in this article apply to that feature. Há também diferenças importantes.There are also important differences. Para obter informações sobre como usar o DirectQuery com o SQL Server Analysis Services, confira DirectQuery no SQL Server 2016 Analysis Services.For information about using DirectQuery with SQL Server Analysis Services, see DirectQuery in SQL Server 2016 Analysis Services.

Este artigo concentra-se no fluxo de trabalho recomendado para o DirectQuery, em que o relatório é criado no Power BI Desktop, mas também aborda a conexão diretamente no serviço do Power BI.This article focuses on the recommended workflow for DirectQuery, where the report is created in Power BI Desktop, but also covers connecting directly in the Power BI service.

Modos de conectividade do Power BIPower BI connectivity modes

O Power BI se conecta a um grande número de fontes de dados variadas, que abrangem:Power BI connects to a large number of varied data sources, encompassing:

  • Serviços online (Salesforce, Dynamics 365 e outros)Online services (Salesforce, Dynamics 365, others)
  • Bancos de dados (SQL Server, Access, Amazon Redshift e outros)Databases (SQL Server, Access, Amazon Redshift, others)
  • Arquivos simples (Excel, JSON e outros)Simple files (Excel, JSON, others)
  • Outras fontes de dados (Spark, sites, Microsoft Exchange e outros)Other data sources (Spark, Web sites, Microsoft Exchange, others)

Para essas fontes, é possível importar os dados no Power BI.For these sources, it's possible to import the data to Power BI. Para algumas delas, também é possível se conectar usando o DirectQuery.For some, it's also possible to connect using DirectQuery. Para obter um resumo das fontes que dão suporte ao DirectQuery, confira Fontes de dados compatíveis com o DirectQuery.For a summary of the sources that support DirectQuery, see Data Sources supported by DirectQuery. Mais fontes serão habilitadas para o DirectQuery no futuro, concentrando-se principalmente em fontes que possam proporcionar um bom desempenho de consulta interativa.More sources will be DirectQuery enabled in the future, focusing primarily on sources that can be expected to deliver good interactive query performance.

O SQL Server Analysis Services é um caso especial.SQL Server Analysis Services is a special case. Ao se conectar ao SQL Server Analysis Services, você pode optar por importar os dados ou usar uma conexão dinâmica.When connecting to SQL Server Analysis Services, you can choose to import the data or use a live connection. O uso de uma conexão dinâmica é semelhante ao DirectQuery.Using a live connection is similar to DirectQuery. Nenhum dado é importado e a fonte de dados subjacente sempre é consultada para atualizar um visual.No data is imported and the underlying data source is always queried to refresh a visual. Uma conexão dinâmica é diferente em muitos outros aspectos e, portanto, um termo diferente, conexão dinâmica versus DirectQuery, é usado.A live connection is different in many other regards, so a different term, live connection versus DirectQuery, is used.

Estas três opções para se conectar aos dados: importação, DirectQuery e conexão dinâmica.These three options for connecting to data: import, DirectQuery, and live connection.

Conexões de importaçãoImport connections

Para a importação, ao usar Obter Dados no Power BI Desktop para se conectar a uma fonte de dados como o SQL Server, o comportamento dessa conexão será o seguinte:For import, when using Get Data in Power BI Desktop to connect to a data source like SQL Server, the behavior of that connection is as follows:

  • Durante a experiência de Obter Dados, o conjunto de tabelas selecionado define cada uma das consultas que retornará um conjunto de dados.During the initial Get Data experience, the set of tables selected each define a query that will return a set of data. Essas consultas podem ser editadas antes do carregamento dos dados, por exemplo, para aplicar filtros, agregar os dados ou unir tabelas diferentes.Those queries can be edited before loading the data, for example, to apply filters, or aggregate the data, or join different tables.
  • Após o carregamento, todos os dados definidos por essas consultas serão importados para o cache do Power BI.Upon load, all of the data defined by those queries will be imported into the Power BI cache.
  • Com a criação de um visual no Power BI Desktop, os dados importados serão consultados.Upon building a visual within Power BI Desktop, the imported data will be queried. O repositório do Power BI garante que a consulta será rápida.The Power BI store ensures the query will be fast. Todas as alterações no visual são refletidas imediatamente.All changes to the visual are reflected immediately.
  • As alterações nos dados subjacentes não são refletidas em nenhum visual.Any changes to the underlying data aren't reflected in any visuals. É necessário atualizar para reimportar os dados.It's necessary to Refresh to reimport data.
  • Após a publicação do relatório como um arquivo .pbix no serviço do Power BI, um conjunto de dados é criado e carregado no serviço do Power BI.Upon publishing the report as a .pbix file to the Power BI service, a dataset is created and uploaded to the Power BI service. Os dados importados são incluídos no conjunto de dados.The imported data is included with that dataset. Em seguida, é possível agendar a atualização desses dados, por exemplo, para reimportar os dados todos os dias.It's then possible to schedule refresh of that data, for example, to reimport the data every day. Dependendo da localização da fonte de dados original, poderá ser necessário configurar um gateway de dados local.Depending upon the location of the original data source, it might be necessary to configure an on-premises data gateway.
  • Ao abrir um relatório existente no serviço do Power BI ou criar um relatório, os dados importados são consultados novamente, garantindo a interatividade.When opening an existing report in the Power BI service, or authoring a new report, the imported data is queried again, ensuring interactivity.
  • Páginas inteiras de relatório ou visuais podem ser fixadas como blocos de dashboard.Visuals, or entire report pages, can be pinned as dashboard tiles. Os blocos são atualizados automaticamente sempre que o conjunto de dados subjacente é atualizado.The tiles automatically refresh whenever the underlying dataset refreshes.

Conexões do DirectQueryDirectQuery connections

Para o DirectQuery, ao usar Obter Dados no Power BI Desktop para se conectar a uma fonte de dados, o comportamento dessa conexão será o seguinte:For DirectQuery, when using Get Data in Power BI Desktop to connect to a data source, the behavior of that connection is as follows:

  • Durante a experiência inicial de Obter Dados, a fonte é selecionada.During the initial Get Data experience, the source is selected. Para fontes relacionais, um conjunto de tabelas é selecionado e cada uma ainda define uma consulta que retorna logicamente um conjunto de dados.For relational sources, a set of tables are selected and each still define a query that logically returns a set of data. Para fontes multidimensionais como SAP BW, somente a fonte é selecionada.For multidimensional sources, like SAP BW, only the source is selected.
  • No entanto, após o carregamento, nenhum dado é importado para o repositório do Power BI.However, upon load, no data is imported into the Power BI store. Em vez disso, após a criação de um visual no Power BI Desktop, as consultas são enviadas à fonte de dados subjacente para recuperar os dados necessários.Instead, upon building a visual within Power BI Desktop, queries are sent to the underlying data source to retrieve the necessary data. O tempo necessário para atualizar o visual depende do desempenho da fonte de dados subjacente.The time taken to refresh the visual depends on the performance of the underlying data source.
  • As alterações nos dados subjacentes não são imediatamente refletidas em nenhum visual existente.Any changes to the underlying data aren't immediately reflected in any existing visuals. Ainda é necessário fazer a atualização.It's still necessary to refresh. As consultas necessárias são reenviadas para cada visual e o visual é atualizado conforme necessário.The necessary queries are resent for each visual, and the visual is updated as necessary.
  • Após a publicação do relatório no serviço do Power BI, isso resultará novamente em um conjunto de dados no serviço do Power BI, o mesmo usado para a importação.Upon publishing the report to the Power BI service, it will again result in a dataset in the Power BI service, the same as for import. No entanto, nenhum dado será incluído nesse conjunto de dados.However, no data is included with that dataset.
  • Ao abrir um relatório existente no serviço do Power BI ou criar um relatório, a fonte de dados subjacente é novamente consultada para recuperar os dados necessários.When opening an existing report in the Power BI service, or authoring a new one, the underlying data source is again queried to retrieve the necessary data. Dependendo da localização da fonte de dados original, poderá ser necessário configurar um gateway de dados local, assim como será necessário para o modo de importação se os dados forem atualizados.Depending upon the location of the original data source, it might be necessary to configure an on-premises data gateway, as is needed for import mode if the data is refreshed.
  • Páginas inteiras de relatório ou visuais podem ser fixadas como blocos de Dashboard.Visuals, or entire report pages, can be pinned as Dashboard tiles. Para garantir que a abertura de um dashboard seja rápida, os blocos são atualizados automaticamente de acordo com um agendamento, por exemplo, a cada hora.To ensure that opening a dashboard is fast, the tiles are automatically refreshed on a schedule, for example, every hour. A frequência dessa atualização pode ser controlada, para refletir a frequência com que os dados são alterados e o nível de importância de ver os dados mais recentes.The frequency of this refresh can be controlled, to reflect how frequently the data is changing, and how important it's to see the latest data. Ao abrir um dashboard, os blocos refletem os dados na hora da última atualização, não necessariamente as últimas alterações feitas na fonte subjacente.When opening a dashboard, the tiles reflect the data at the time of the last refresh, and not necessarily the latest changes made to the underlying source. Você pode atualizar um dashboard aberto para garantir que ele seja atual.You can refresh an open dashboard to ensure it's current.

Conexões dinâmicasLive connections

Ao se conectar ao SQL Server Analysis Services, há uma opção para importar dados do modelo de dados selecionado ou conectar-se dinamicamente a ele.When connecting to SQL Server Analysis Services, there's an option to either import data from or connect live to, the selected data model. Se você usar a importação, defina uma consulta nessa fonte externa do SQL Server Analysis Services e os dados serão importados normalmente.If you use import, you define a query against that external SQL Server Analysis Services source, and the data is imported as normal. Se você usar a conexão dinâmica, não haverá nenhuma consulta definida e todo o modelo externo será mostrado na lista de campos.If you use connect live, there's no query defined, and the entire external model is shown in the field list.

A situação descrita no parágrafo anterior se aplica à conexão com as seguintes fontes também, com exceção de que não há nenhuma opção para importar os dados:The situation described in the previous paragraph applies to connecting to the following sources as well, except that there's no option to import the data:

  • Conjuntos de dados do Power BI, por exemplo, ao se conectar a um conjunto de dados do Power BI que foi anteriormente criado e publicado no serviço, com a finalidade de criar um relatório com base nele.Power BI datasets, for example, when connecting to a Power BI dataset that has previously been created and published to the service, to author a new report over it.
  • Microsoft Dataverse.Microsoft Dataverse.

O comportamento de relatórios no SQL Server Analysis Services, após a publicação no serviço do Power BI, é semelhante ao comportamento dos relatórios do DirectQuery das seguintes maneiras:The behavior of reports over SQL Server Analysis Services, upon publishing to the Power BI service, is similar to DirectQuery reports in the following ways:

  • Ao abrir um relatório existente no serviço do Power BI ou criar um relatório, a fonte subjacente do SQL Server Analysis Services é consultada, possivelmente, exigindo um gateway de dados local.When opening an existing report in the Power BI service or authoring a new report, the underlying SQL Server Analysis Services source is queried, possibly requiring an on-premises data gateway.
  • Os blocos de dashboard são atualizados automaticamente de acordo com um agendamento, por exemplo, a cada hora.Dashboard tiles are automatically refreshed on a schedule, such as every hour.

Há também diferenças importantes.There are also important differences. Por exemplo, nas conexões dinâmicas, a identidade do usuário que abre o relatório sempre é transmitida para a fonte subjacente do SQL Server Analysis Services.For instance, for live connections, the identity of the user opening the report is always passed to the underlying SQL Server Analysis Services source.

Deixando essas comparações de lado, vamos nos concentrar apenas no DirectQuery no restante deste artigo.With these comparisons out of the way, let's focus solely on DirectQuery for the rest of this article.

Quando o DirectQuery é útil?When is DirectQuery useful?

A tabela a seguir descreve cenários nos quais a conexão com o DirectQuery pode ser especialmente útil.The following table describes scenarios where connecting with DirectQuery could be especially useful. Ela inclui casos em que manter os dados na fonte original é considerado benéfico.It includes cases where leaving the data in the original source would be considered beneficial. A descrição inclui uma discussão sobre a disponibilidade do cenário especificado no Power BI.The description includes a discussion about whether the specified scenario is available in Power BI.

LimitaçãoLimitation DescriçãoDescription
Dados com alterações frequentes e a necessidade de relatórios quase em tempo realData is changing frequently, and near real-time reporting is needed Os modelos com os dados importados podem ser atualizados no máximo uma vez por hora (com uma frequência maior com as assinaturas do Power BI Pro ou do Power BI Premium).Models with imported data can be refreshed at most once per hour (more frequently with Power BI Pro or Power BI Premium subscriptions). Se os dados estiverem continuamente em alteração e for necessário que os relatórios mostrem os dados mais recentes, o uso da importação com a atualização agendada poderá não atender a essas necessidades.If the data is continually changing, and it's necessary for reports to show the latest data, using import with scheduled refresh might not meet those needs. Você pode transmitir os dados diretamente para o Power BI, embora haja limites para os volumes de dados compatíveis com esse caso.You can stream data directly into Power BI, though there are limits on the data volumes supported for this case.

O uso do DirectQuery, por outro lado, significa que abrir ou atualizar um relatório ou um dashboard sempre mostra os dados mais recentes na fonte.Using DirectQuery, by contrast, means that opening or refreshing a report or dashboard always shows the latest data in the source. Além disso, os blocos de dashboard podem ser atualizados com mais frequência, por exemplo, a cada 15 minutos.Additionally, the dashboard tiles can be updated more frequently, as often as every 15 minutes.
Os dados são muito grandesData is very large Se os dados forem muito grandes, não será possível importá-los todos eles.If the data is very large, it wouldn't be feasible to import it all. O DirectQuery, por outro lado, não exige uma grande transferência de dados, pois ele é consultado in-loco.DirectQuery, by contrast, requires no large transfer of data, because it's queried in place.

No entanto, dados grandes também podem indicar que o desempenho das consultas nessa fonte subjacente é muito lento, conforme abordado em Implicações do uso do DirectQuery.However, large data might also imply that the performance of the queries against that underlying source is too slow, as discussed in Implications of using DirectQuery. Você nem sempre precisa importar os dados detalhados completos.You don't always have to import the full detailed data. Em vez disso, os dados podem ser pré-agregados durante a importação.Instead, the data can be pre-aggregated during import. O Editor de Consultas facilita a pré-agregação durante a importação.The Query Editor makes it easy to pre-aggregate during import. Em última análise, é possível importar exatamente os dados de agregação necessários para cada visual.In the extreme, it would be possible to import exactly the aggregate data needed for each visual. Embora o DirectQuery seja a abordagem mais simples para dados grandes, a importação de dados agregados poderá oferecer uma solução caso a fonte subjacente seja muito lenta.While DirectQuery is the simplest approach to large data, importing aggregate data might offer a solution if the underlying source is too slow.
Regras de segurança são definidas na fonte subjacenteSecurity rules are defined in the underlying source Quando os dados são importados, o Power BI se conecta à fonte de dados usando as credenciais do usuário atual no Power BI Desktop ou as credenciais definidas como parte da configuração da atualização agendada no serviço do Power BI.When the data is imported, Power BI connects to the data source using the current user's credentials from Power BI Desktop, or the credentials defined as part of configuring scheduled refresh from the Power BI service. Ao publicar e compartilhar um relatório com os dados no modo de importação, tenha cuidado para só compartilhá-lo com usuários que tenham a permissão de ver os mesmos dados ou defina a segurança em nível de linha como parte do conjunto de dados.In publishing and sharing such a report with data in import mode, be careful to only share with users allowed to see the same data, or to define row-level security as part of the dataset.

O DirectQuery permite que as credenciais de um visualizador de relatórios passem pelas regras de segurança e de origem subjacentes que serão aplicadas nele.DirectQuery allows for a report viewer's credentials to be passed through to the underlying source and security rules to be applied there. O logon único tem suporte nas fontes de dados do SQL Azure e no gateway de dados para servidores SQL locais.Single sign-on is supported to SQL Azure datasources, and through the data gateway to on-premises SQL servers. Isso é explicado em maior detalhe em Visão geral de SSO (logon único) para gateways no Power BI.This is covered in more detail in Overview of single sign-on (SSO) for gateways in Power BI.
Houver aplicação de restrições de soberania de dadosData sovereignty restrictions apply Algumas organizações têm políticas em relação à soberania de dados, resultando na impossibilidade de os dados deixarem as instalações da organização.Some organizations have policies around data sovereignty, meaning that data can't leave the organization premises. Uma solução baseada na importação claramente apresentaria problemas.A solution based on import would clearly present issues. Por outro lado, com o DirectQuery os dados permanecem na fonte subjacente.By contrast, with DirectQuery that data remains in the underlying source.

No entanto, mesmo com o DirectQuery, alguns caches de dados no nível do visual são mantidos no serviço do Power BI, devido à atualização agendada dos blocos.However, even with DirectQuery, some caches of data at the visual level are kept in the Power BI service because of scheduled refresh of tiles.
A fonte de dados subjacente é uma fonte OLAP contendo medidasUnderlying data source is an OLAP source, containing measures Se a fonte de dados subjacente contiver medidas, como o SAP HANA ou o SAP Business Warehouse, a importação dos dados ocasionará outros problemas.If the underlying data source contains measures, such as SAP HANA or SAP Business Warehouse, then importing the data brings other issues. Isso significa que os dados importados estão em um determinado nível de agregação, conforme definido pela consulta.It means that the data imported is at a particular level of aggregation, as defined by the query. Por exemplo, as medidas TotalSales por Class, Year e City.For example, measures TotalSales by Class, Year, and City. Nesse caso, se um visual for criado com a solicitação de dados em um nível mais alto de agregação, como TotalSales por Year, haverá uma agregação adicional do valor agregado.Then if a visual is built asking for data at a higher-level aggregate, such as TotalSales by Year, it's further aggregating the aggregate value. Essa agregação é adequada para medidas aditivas, como Sum e Min, mas é um problema para medidas não aditivas, como Average e DistinctCount.This aggregation is fine for additive measures, such as Sum and Min, but it's an issue for non-additive measures, such as Average, DistinctCount.

Para facilitar a obtenção dos dados de agregação corretos, conforme necessário para um visual específico, diretamente da fonte, é necessário enviar consultas por visual, como no DirectQuery.To make it easy to get the correct aggregate data, as needed for the particular visual, directly from the source, it would be necessary to send queries per visual, as in DirectQuery.

Ao conectar-se com o SAP BW (Business Warehouse), a escolha do DirectQuery permite esse tratamento das medidas.When connecting to SAP Business Warehouse (BW), choosing DirectQuery allows for this treatment of measures. Para obter informações sobre o SAP BW, confira DirectQuery e SAP BW.For information about SAP BW, see DirectQuery and SAP BW.

No entanto, atualmente, o DirectQuery no SAP HANA a trata como uma fonte relacional e fornece um comportamento semelhante à importação.However, currently DirectQuery over SAP HANA treats it the same as a relational source, and provides similar behavior to import. Essa abordagem é detalhada em DirectQuery e SAP HANA.This approach is covered further in DirectQuery and SAP HANA.

Em resumo, considerando as funcionalidades atuais do DirectQuery no Power BI, ele oferece os benefícios nos seguintes cenários:In summary, given the current capabilities of DirectQuery in Power BI, it offers the benefits in the following scenarios:

  • Dados com alterações frequentes e a necessidade de relatórios quase em tempo real.Data is changing frequently, and near real-time reporting is needed.
  • Manipulação de dados muito grandes, sem a necessidade de pré-agregação.Handling very large data, without the need to pre-aggregate.
  • Aplicação de restrições de soberania de dados.Data sovereignty restrictions apply.
  • A fonte é uma fonte multidimensional que contém medidas, como o SAP BW.The source is a multidimensional source containing measures, such as SAP BW.

Os detalhes da lista anterior relacionam-se ao uso do Power BI isoladamente.The details in the previous list relate to the use of Power BI alone. Em vez disso, você pode usar um modelo externo do SQL Server Analysis Services ou do Azure Analysis Services para importar dados.Instead, you could use an external SQL Server Analysis Services or Azure Analysis Services model to import data. Em seguida, use o Power BI para se conectar a esse modelo.Then use Power BI to connect to that model. Embora essa abordagem exija configuração adicional, ela oferece maior flexibilidade.While that approach would require additional configuration, it does provide greater flexibility. Volumes de dados muito maiores podem ser importados.Much larger volumes of data can be imported. Não há restrição para a frequência com que os dados podem ser atualizados.There's no restriction on how frequently the data can be refreshed.

Implicações do uso do DirectQueryImplications of using DirectQuery

O uso do DirectQuery tem implicações potencialmente negativas, conforme detalhado nesta seção.Use of DirectQuery does have potentially negative implications, as detailed in this section. Algumas dessas limitações são ligeiramente diferentes de acordo com a fonte exata que está sendo usada.Some of those limitations are slightly different depending upon the exact source that is being used. Abordamos as limitações sempre que aplicável e artigos separados abordam essas fontes que são significativamente diferentes.We address limitations where applicable, and separate articles cover those sources that are substantially different.

Desempenho e carregamento na fonte subjacentePerformance and load on the underlying source

Ao usar o DirectQuery, a experiência geral depende muito do desempenho da fonte de dados subjacente.When using DirectQuery, the overall experience depends very much on the performance of the underlying data source. Se a atualização de cada visual, por exemplo, após a alteração de um valor de segmentação, levar alguns segundos, geralmente, menos de 5 segundos, a experiência será razoável.If refreshing each visual, for example, after changing a slicer value, takes a few seconds, usually less than 5 seconds, the experience would be reasonable. A experiência pode parecer lenta em comparação com a resposta imediata ao importar os dados para o Power BI.The experience might feel sluggish compared to the immediate response when importing the data to Power BI. Se a lentidão da origem fizer com que visuais individuais levem mais de dezenas de segundos, a experiência se tornará extremamente ruim.If the slowness of the source causes individual visuals to take longer than tens of seconds, the experience becomes extremely poor. As consultas podem, até mesmo, atingir o tempo limite.Queries may even time out.

Junto com o desempenho da fonte subjacente, preste atenção à carga colocada na origem.Along with the performance of the underlying source, pay attention to the load placed upon the source. A carga afeta o desempenho.Load impacts performance. Cada usuário que abre um relatório compartilhado e cada bloco de dashboard que é atualizado enviam, pelo menos, uma consulta por visual à fonte subjacente.Each user who opens a shared report, and each dashboard tile that refreshes, sends at least one query per visual to the underlying source. Esse fato exige que a fonte possa processar uma carga de consulta como essa, mantendo um desempenho razoável.This fact requires that the source can handle such a query load, while still maintaining reasonable performance.

Implicações de segurança ao combinar fontes de dadosSecurity implications when combining data sources

É possível usar várias fontes de dados em um modelo do DirectQuery, assim como ao importar dados, usando o recurso Modelos compostos.It's possible to use multiple data sources in a DirectQuery model, just as when you import data, by using the Composite models feature. Ao usar várias fontes de dados, é importante entender como os dados são movidos entre as fontes de dados subjacentes e as implicações de segurança que isso gera.When you use multiple data sources, it's important to understand how data is moved back and forth between the underlying data sources, and the security implications it brings.

Transformações de dados limitadasLimited data transformations

Da mesma forma, há limitações nas transformações de dados que podem ser aplicadas no Editor de Consultas.Similarly, there are limitations in the data transformations that can be applied within Query Editor. Com os dados importados, um conjunto sofisticado de transformações pode ser aplicado com facilidade para limpar e remodelar os dados antes de usá-los para criar visuais, como analisar documentos JSON ou dinamizar dados de uma coluna para um formato de linha.With imported data, a sophisticated set of transformations can easily be applied to clean and reshape the data before using it to create visuals, such as parsing JSON documents, or pivoting data from a column to a row form. Essas transformações são mais limitadas no DirectQuery.Those transformations are more limited in DirectQuery.

Primeiro, ao se conectar a uma fonte OLAP como o SAP Business Warehouse, nenhuma transformação poderá ser definida e todo o modelo externo será obtido da fonte.First, when connecting to an OLAP source like SAP Business Warehouse, no transformations can be defined at all, and the entire external model is taken from the source. Para fontes relacionais como o SQL Server, ainda é possível definir um conjunto de transformações por consulta, mas essas transformações são limitadas por questões de desempenho.For relational sources, like SQL Server, it's still possible to define a set of transformations per query, but those transformations are limited for performance reasons.

Qualquer uma dessas transformações precisará ser aplicada em cada consulta à fonte subjacente, ao invés de uma vez a cada atualização de dados, de modo que elas fiquem limitadas às transformações que possam ser convertidas razoavelmente em uma só consulta nativa.Any such transformation will need to be applied on every query to the underlying source, rather than once on data refresh, so they're limited to those transformations that can reasonably be translated into a single native query. Se você usar uma transformação que seja muito complexa, receberá um erro que indicará que ela precisará ser excluída ou o modelo precisará ser alternado para importação.If you use a transformation that is too complex, you receive an error that either it must be deleted or the model switched to import.

Além disso, a consulta resultante da caixa de diálogo Obter Dados ou do Editor de Consultas será usada em uma subseleção dentro das consultas geradas e enviada para recuperar os dados necessários para um visual.Additionally, the query that results from the Get Data dialog or Query Editor will be used in a subselect within the queries generated and sent to retrieve the necessary data for a visual. A consulta definida no Editor de Consultas precisará ser válida nesse contexto.The query defined in Query Editor must be valid within this context. Em particular, não é possível usar uma consulta com expressões de tabela comuns nem uma que invoque procedimentos armazenados.In particular, it's not possible to use a query using Common Table Expressions, nor one that invokes Stored Procedures.

Limitações de modelagemModeling limitations

O termo modelagem, nesse contexto, significa o ato de refinar e enriquecer os dados brutos, como parte da criação de um relatório que os utiliza.The term modeling in this context means the act of refining and enriching the raw data, as part of authoring a report using it. Os exemplos incluem:Examples include:

  • Definir relações entre tabelasDefining relationships between tables
  • Adicionar novos cálculos (colunas calculadas e medidas)Adding new calculations (calculated columns and measures)
  • Renomear e ocultar colunas e medidasRenaming and hiding columns and measures
  • Definir hierarquiasDefining hierarchies
  • Definir a formatação, a ordem de classificação e o resumo padrão de uma colunaDefining the formatting, default summarization and sort order for a column
  • Agrupar ou realizar clustering de valoresGrouping or clustering values

Ao usar o DirectQuery, muitos desses enriquecimentos de modelo ainda poderão ser feitos e, certamente, ainda haverá o princípio de que os dados brutos estarão sendo enriquecidos para aprimorar o consumo posterior.When using DirectQuery, many of these model enrichments can still be made, and certainly there's still the principle that the raw data is being enriched, so as to improve later consumption. No entanto, há algumas funcionalidades de modelagem que não estão disponíveis ou que são limitadas ao usar o DirectQuery.However, there are some modeling capabilities that aren't available, or are limited, when using DirectQuery. Geralmente, as limitações são aplicadas para evitar problemas de desempenho.The limitations are generally applied to avoid performance issues. O conjunto de limitações que são comuns a todas as fontes do DirectQuery é listado aqui.The set of limitations that are common to all DirectQuery sources are listed here. Limitações adicionais podem se aplicar a fontes individuais, conforme descrito em Próximas etapas.Additional limitations might apply to individual sources, as described in Next steps.

  • Nenhuma hierarquia de datas interna: Ao importar dados, cada coluna de data/datetime também terá uma hierarquia de data interna disponível por padrão.No built-in date hierarchy: When importing data, every date/datetime column will also have a built-in date hierarchy available by default. Por exemplo, se uma tabela de ordens de vendas estiver sendo importada, incluindo uma coluna OrderDate e, em seguida, após o uso de OrderDate em um visual, será possível escolher o nível apropriado (ano, mês, dia) a ser usado.For example, if importing a table of sales orders including a column OrderDate, then upon using OrderDate in a visual, it will be possible to choose the appropriate level (year, month, day) to use. Essa hierarquia de data interna não está disponível ao usar o DirectQuery.This built-in date hierarchy isn't available when using DirectQuery. Se houver uma tabela Date disponível na fonte subjacente, como é comum em muitos data warehouses, as funções de inteligência de dados temporais do DAX poderão ser usadas normalmente.If there's a Date table available in the underlying source, as is common in many data warehouses, then the DAX Time Intelligence functions can be used as normal.
  • Suporte para data/hora com precisar apenas até os segundos: ao usar colunas de hora em seu conjunto de dados, o Power BI emite apenas consultas para a origem subjacente até o nível de detalhe dos segundos.Date/time support only to second accuracy: When using time columns in your dataset, Power BI only issues queries to the underlying source to a level of detail of seconds. As consultas não são enviadas à fonte do DirectQuery durante milissegundos.Queries aren't sent to the DirectQuery source for milliseconds. Remova essa parte das horas das colunas de origem.Remove this part of the times from your source columns.
  • Limitações em colunas calculadas: as colunas calculadas são limitadas a serem intra-linha e, sendo assim, só podem fazer referência a valores de outras colunas da mesma tabela, sem o uso de quaisquer funções de agregação.Limitations in calculated columns: Calculated columns are limited to being intra-row, as in, they can only refer to values of other columns of the same table, without the use of any aggregate functions. Além disso, as funções escalares DAX, como LEFT(), que são permitidas, são limitadas às funções que podem ser enviadas por push para a fonte subjacente.Additionally, the DAX scalar functions, such as LEFT(), that are allowed, are limited to those functions that can be pushed to the underlying source. As funções variam de acordo com as funcionalidades exatas da origem.The functions vary depending upon the exact capabilities of the source. As funções para as quais não há suporte não são listadas no preenchimento automático durante a criação do DAX em uma coluna calculada e resultam em um erro caso sejam usadas.Functions that aren't supported aren't listed in autocomplete when authoring the DAX for a calculated column, and would result in an error if used.
  • Não há suporte para as funções DAX pai-filho: No modo DirectQuery, não é possível usar a família de funções DAX PATH() que geralmente processam estruturas pai-filho, como plano de contas ou hierarquias de funcionários.No support for parent-child DAX functions: When in DirectQuery mode, it's not possible to use the family of DAX PATH() functions that generally handle Parent-Child structures, such as chart of accounts, or employee hierarchies.
  • Não há suporte para tabelas calculadas: não há suporte para a capacidade de definir uma tabela calculada usando uma expressão DAX no modo DirectQuery.Calculated tables aren't supported: The ability to define a calculated table using a DAX expression isn't supported in DirectQuery mode.
  • Filtragem de relacionamentos: Para obter informações sobre a filtragem bidirecional, confira Filtragem cruzada bidirecional.Relationship filtering: For information about bi-directional filtering, see Bidirectional cross-filtering. Este white paper apresenta exemplos no contexto do SQL Server Analysis Services.This whitepaper presents examples in the context of SQL Server Analysis Services. Os pontos fundamentais aplicam-se igualmente ao Power BI.The fundamental points apply equally to Power BI.
  • Sem Clustering: ao usar o DirectQuery, não é possível usar a funcionalidade Clustering para localizar grupos automaticamente.No Clustering: When using DirectQuery, it's not possible to use the Clustering capability, to automatically find groups.

Limitações de relatóriosReporting limitations

Quase todos os recursos de relatórios têm suporte para modelos do DirectQuery.Almost all reporting capabilities are supported for DirectQuery models. Sendo assim, desde que a fonte subjacente ofereça um nível adequado de desempenho, o mesmo conjunto de visualizações poderá ser usado.As such, so long as the underlying source offers a suitable level of performance, the same set of visualizations can be used. Há algumas limitações importantes em algumas das outras funcionalidades oferecidas no serviço do Power BI depois que um relatório é publicado:There are some important limitations in some of the other capabilities offered in the Power BI service after a report is published:

  • Não há suporte para Insights Rápidos: Os Insights Rápidos do Power BI pesquisam diferentes subconjuntos do conjunto de dados durante a aplicação de um conjunto de algoritmos sofisticados para descobrir insights que possam ser interessantes.Quick Insights isn't supported: Power BI Quick Insights searches different subsets of your dataset while applying a set of sophisticated algorithms to discover potentially interesting insights. Considerando a necessidade de consultas de desempenho muito alto, essa funcionalidade não está disponível em conjuntos de dados que usam o DirectQuery.Given the need for very high performance queries, this capability isn't available on datasets using DirectQuery.
  • O uso de Explorar no Excel provavelmente resultará em desempenho insatisfatório: explore os dados usando a funcionalidade Explorar no Excel em um conjunto de dados.Using Explore in Excel will likely result in poorer performance: You can explore your data by using the Explore in Excel capability on a dataset. Essa abordagem permite a criação de Tabelas Dinâmicas e Gráficos Dinâmicos no Excel.This approach allows Pivot Tables and Pivot Charts to be created in Excel. Embora haja suporte para essa funcionalidade em conjuntos de dados que usam o DirectQuery, o desempenho será geralmente mais lento do que na criação de visuais no Power BI e, portanto, se o uso do Excel for importante para os cenários, esse fato deverá ser considerado em sua decisão de usar o DirectQuery.While this capability is supported on datasets using DirectQuery, the performance is generally slower than creating visuals in Power BI, and therefore if the use of Excel is important for your scenarios, this fact should be accounted for in your decision to use DirectQuery.
  • Comprimento máximo para colunas de texto: O comprimento máximo dos dados em uma coluna de texto para conjuntos de dados que usam DirectQuery é de 32.764 caracteres.Maximum length for text columns: The maximum length of the data in a text column for datasets using DirectQuery is 32,764 characters. A criação de relatório em textos mais longos do que isso resultará em erro.Reporting on longer texts than that will result in an error.

SegurançaSecurity

Conforme discutido anteriormente neste artigo, um relatório no DirectQuery sempre usa as mesmas credenciais fixas para se conectar à fonte de dados subjacente depois que ele é publicado no serviço do Power BI.As discussed earlier in this article, a report in DirectQuery always uses the same fixed credentials to connect to the underlying data source, after it's published to the Power BI service. Esse comportamento se aplica ao DirectQuery, não às conexões dinâmicas com o SQL Server Analysis Services, que são diferentes nesse sentido.This behavior applies to DirectQuery, not to live connections to SQL Server Analysis Services, which is different in this respect. Imediatamente após a publicação de um relatório do DirectQuery, é necessário configurar as credenciais do usuário que serão usadas.Immediately after publish of a DirectQuery report, it's necessary to configure the credentials of the user that will be used. Até que você configure as credenciais, a abertura do relatório no serviço do Power BI resultará em um erro.Until you configure the credentials, opening the report on the Power BI service would result in an error.

Depois que as credenciais do usuário forem fornecidas, elas serão usadas, seja qual for o usuário que abrirá o relatório.Once the user credentials are provided, then those credentials will be used whichever user who opens the report. Dessa forma, isso é exatamente como os dados importados.In this way, it's exactly like imported data. Cada usuário vê os mesmos dados, a menos que a Segurança em Nível de Linha tenha sido definida como parte do relatório.Every user sees the same data, unless row-level security has been defined as part of the report. É necessário dar a mesma atenção ao compartilhamento do relatório, caso haja regras de segurança definidas na fonte subjacente.The same attention must be paid to sharing the report, if there are any security rules defined in the underlying source.

Além disso, não há suporte para 'credenciais alternativas' ao fazer conexões do DirectQuery com o SQL Server no Power BI Desktop.Additionally, 'alternate credentials' aren't supported when making DirectQuery connections to SQL Server from Power BI Desktop. Você pode usar as suas credenciais atuais do Windows ou credenciais de banco de dados.You can use your current Windows credentials or database credentials.

Comportamento no serviço do Power BIBehavior in the Power BI service

Esta seção descreve o comportamento de um relatório do DirectQuery no serviço do Power BI, para explicar o grau de carregamento que será colocado na fonte de dados de back-end, dado o número de usuários com os quais o relatório e o dashboard serão compartilhados, a complexidade do relatório e se a Segurança em Nível de Linha foi definida no relatório.This section describes the behavior of a DirectQuery report in the Power BI service, to explain the degree of load that will be placed on the back-end data source, given the number of users that the report and dashboard will be shared with, the complexity of the report, and whether row-level security has been defined in the report.

Relatórios – abrir, interagir, editarReports – opening, interacting with, editing

Quando um relatório é aberto, todos os visuais da página atualmente visível são atualizados.When a report is opened, all the visuals on the currently visible page refresh. Cada visual geralmente exige, pelo menos, uma consulta à fonte de dados subjacente.Each visual generally requires at least one query to the underlying data source. Alguns visuais podem exigir mais de uma consulta.Some visuals might require more than one query. Por exemplo, um visual pode mostrar valores de agregação de duas tabelas de fatos diferentes, conter uma medida mais complexa ou conter os totais de uma medida não aditiva, como Contagem Distinta.For example, a visual might show aggregate values from two different fact tables, or contain a more complex measure, or contain totals of a non-additive measure like Count Distinct. O acesso de uma nova página atualiza esses visuais.Moving to a new page refreshes those visuals. A atualização envia um novo conjunto de consultas para a fonte subjacente.Refreshing sends a new set of queries to the underlying source.

Cada interação do usuário no relatório pode resultar na atualização de visuais.Every user interaction on the report might result in visuals being refreshed. Por exemplo, a seleção de outro valor em uma segmentação exige o envio de um novo conjunto de consultas para atualizar todos os visuais afetados.For example, selecting a different value on a slicer requires sending a new set of queries to refresh all of the affected visuals. O mesmo é verdadeiro ao clicar em um visual para realizar destaques cruzados de outros visuais ou alterar um filtro.The same is true for clicking on a visual to cross-highlight other visuals, or changing a filter.

Da mesma forma, a edição de um novo relatório exige o envio de consultas para cada etapa no caminho para produzir o visual final.Similarly, editing a new report requires queries to be sent for each step on the path to produce the final visual.

Ocorre o cache dos resultados.There's some caching of results. A atualização de um visual é instantânea se exatamente os mesmos resultados foram obtidos recentemente.The refresh of a visual is instantaneous if the exact same results have recently been obtained. Se a segurança em nível de linha não estiver definida, esses caches não serão compartilhados entre os usuários.If row-level security is defined, such caches aren't shared across users.

Atualização do dashboardDashboard Refresh

Visuais individuais ou páginas inteiras podem ser fixados como blocos no dashboard.Individual visuals, or entire pages, can be pinned to dashboard as tiles. Os blocos baseados nos conjuntos de dados do DirectQuery são atualizados automaticamente de acordo com um agendamento.Tiles based on DirectQuery datasets refresh automatically according to a schedule. Os blocos enviam consultas para a fonte de dados de back-end.Tiles send queries to the back-end data source. Por padrão, os conjuntos de dados são atualizados a cada hora, mas podem ser definidos como parte das configurações do conjunto de dados para ocorrerem entre intervalos semanais e de 15 minutos.By default, datasets refresh every hour, but can be configured as part of dataset settings to be between weekly and every 15 minutes.

Se nenhuma Segurança em Nível de Linha estiver definida no modelo, cada bloco será atualizado uma vez e os resultados compartilhados entre todos os usuários.If no row-level security is defined in the model, each tile is refreshed once, and the results shared across all users. Caso contrário, poderá haver um grande efeito multiplicador.Otherwise, there can be a large multiplier effect. Cada bloco exige que as consultas separadas por usuário sejam enviadas para a fonte subjacente.Each tile requires separate queries per user to be sent to the underlying source.

Um dashboard com 10 blocos, compartilhado com 100 usuários, criado em um conjunto de dados usando o DirectQuery com a Segurança em Nível de Linha e configurado para ser atualizado a cada 15 minutos, fará com que, pelo menos, 1.000 consultas sejam enviadas a cada 15 minutos à fonte de back-end.A dashboard with 10 tiles, shared with 100 users, created on a dataset using DirectQuery with row-level security, and configured to refresh every 15 minutes, would result in at least 1000 queries being sent every 15 minutes to the back-end source.

Preste atenção especial ao uso da Segurança em Nível de Linha e da configuração do agendamento de atualização.Pay careful consideration to the use of row-level security, and the configuring of the refresh schedule.

Tempos limiteTime-outs

Um tempo limite de quatro minutos é aplicado a consultas individuais no serviço do Power BI.A time-out of four minutes is applied to individual queries in the Power BI service. As consultas que levam mais tempo do que isso falharão.Queries taking longer than that will fail. Conforme enfatizado anteriormente, recomendamos que você use o DirectQuery para fontes que fornecem desempenho de consulta quase interativo.As stressed earlier, we recommend that you use DirectQuery for sources that provide near interactive query performance. Esse limite tem como finalidade evitar problemas de tempos de execução excessivamente longos.This limit is intended to prevent issues from overly long execution times.

Outras implicaçõesOther implications

Algumas outras implicações gerais do uso do DirectQuery são as seguintes:Some other general implications of using DirectQuery are as follows:

  • Se os dados forem alterados, será necessário fazer a atualização para garantir que os dados mais recentes sejam mostrados: Considerando o uso dos caches, não há nenhuma garantia de que o visual sempre mostre os dados mais recentes.If data is changing, it's necessary to refresh to ensure the latest data is shown: Given the use of caches, there's no guarantee that the visual is always showing the latest data. Por exemplo, um visual pode mostrar as transações do dia anterior.For example, a visual might show the transactions in the last day. Devido à alteração de uma segmentação, ela pode ser atualizada para mostrar as transações dos últimos dois dias.Because of a slicer being changed, it might refresh to show the transactions for the last two days. As transações podem incluir transações recentes, recém-recebidas.The transactions could include recent, newly arrived transactions. Se a segmentação for retornada ao valor original, isso fará com que ela mostre novamente o valor armazenado em cache obtido anteriormente.Returning the slicer to its original value would result in it again showing the cached value previously obtained.

    A seleção de Atualizar limpa todos os caches e atualiza todos os visuais na página para mostrar os dados mais recentes.Selecting Refresh clears any caches and refreshes all the visuals on the page to show the latest data.

  • Se os dados forem alterados, não haverá nenhuma garantia de consistência entre os visuais: visuais diferentes, na mesma página ou em páginas diferentes, podem ser atualizados em diferentes momentos.If data is changing, there's no guarantee of consistency between visuals: Different visuals, whether on the same page or on different pages, might be refreshed at different times. Se os dados da fonte subjacente forem alterados, não haverá nenhuma garantia de que cada visual mostrará os dados exatamente no mesmo ponto de tempo.If the data in the underlying source is changing, there's no guarantee that each visual shows the data at the exact same point of time. Na verdade, considerando que, às vezes, mais de uma consulta é necessária para um só visual, por exemplo, para obter os detalhes e os totais, não há nenhuma garantia de consistência, mesmo em um só visual.Indeed, given that sometimes more than one query is required for a single visual, for example, to obtain the details and the totals, then consistency even within a single visual isn't guaranteed. Garantir essa consistência exige a sobrecarga da atualização de todos os visuais sempre que qualquer visual é atualizado, em conjunto com o uso de recursos caros como o isolamento do instantâneo na fonte de dados subjacente.To guarantee this consistency would require the overhead of refreshing all visuals whenever any visual refreshed, in tandem with the use of costly features like Snapshot Isolation in the underlying data source.

    Esse problema pode ser atenuado em grande parte selecionando Atualizar novamente para atualizar todos os visuais da página.This issue can be mitigated to a large extent by again selecting Refresh to refresh all of the visuals on the page. Mesmo com o uso do modo de importação, há um problema semelhante para garantir a consistência com a importação de dados de mais de uma tabela.Even if using import mode, there's a similar problem of guaranteeing consistency while importing data from more than one table.

  • A atualização no Power BI Desktop é necessária para refletir as mudanças nos metadados: Depois que um relatório for publicado, a opção Atualizar atualizará os visuais do relatório.Refresh in Power BI Desktop is needed to reflect any metadata changes: After a report is published, Refresh will refresh the visuals in the report. Se o esquema da fonte subjacente for alterado, essas alterações não serão aplicadas automaticamente para alterar os campos disponíveis na lista de campos.If the schema of the underlying source has changed, then those changes aren't automatically applied to change the available fields in the field list. Se tabelas ou colunas forem removidas da fonte subjacente, isso poderá resultar em uma falha de consulta após a atualização.If tables or columns have been removed from the underlying source, it might result in query failure upon refresh. A abertura do relatório no Power BI Desktop e a escolha de Atualizar atualizará os campos no modelo para refletir as alterações.Opening the report in Power BI Desktop, and choosing Refresh updates the fields in the model to reflect the changes.

  • Limite de 1 milhão de linhas retornadas em qualquer consulta: há um limite fixo de 1 milhão de linhas colocadas no número de linhas que podem ser retornadas em qualquer consulta individual para a fonte subjacente.Limit of 1 million rows returned on any query: There's a fixed limit of 1 million rows placed on the number of rows that can be returned in any single query to the underlying source. Esse limite geralmente não tem nenhuma implicação prática e os próprios visuais não exibirão essa quantidade de pontos.This limit generally has no practical implications, and visuals themselves aren't going to display that many points. No entanto, o limite pode ocorrer nos casos em que o Power BI não otimiza por completo as consultas enviadas e há um resultado intermediário sendo solicitado que excede o limite.However, the limit can occur in cases where Power BI isn't fully optimizing the queries sent, and there's some intermediate result being requested that exceeds the limit. Isso pode ocorrer durante a criação de um visual, no caminho para um estado final mais razoável.It can also occur while building a visual, on the path to a more reasonable final state. Por exemplo, a inclusão de Customer e TotalSalesQuantity alcançará esse limite se houver mais de 1 milhão de clientes, até que algum filtro seja aplicado.For example, including Customer and TotalSalesQuantity would hit this limit if there were more than 1 million customers, until some filter were applied.

    O erro retornado será: "O conjunto de resultados de uma consulta a uma fonte de dados externa excedeu o tamanho máximo permitido de '1.000.000' linhas."The error that would be returned would be: "The resultset of a query to external data source has exceeded the maximum allowed size of '1000000' rows."

  • Não é possível alterar do modo de importação para o modo DirectQuery: Embora seja possível alternar um modelo do modo DirectQuery para usar o modo de importação, todos os dados necessários precisam ser importados.Can't change from import to DirectQuery mode: While it's possible to switch a model from DirectQuery mode to use import mode, all the necessary data must be imported. Também não é possível alternar de volta, principalmente, devido ao conjunto de recursos sem suporte no modo DirectQuery.It's also not possible to switch back, primarily because of the set of features not supported in DirectQuery mode. Os modelos do DirectQuery em fontes multidimensionais, como o SAP BW, também não podem ser alternados do DirectQuery para importação, devido ao tratamento diferente das medidas externas.DirectQuery models over multidimensional sources, like SAP BW, also can't be switched from DirectQuery to import, because of the different treatment of external measures.

DirectQuery no serviço do Power BIDirectQuery in the Power BI service

Há suporte para todas as fontes no Power BI Desktop.All sources are supported from Power BI Desktop. Algumas fontes também estão disponíveis diretamente no serviço do Power BI.Some sources are also available directly from within the Power BI service. Por exemplo, é possível que um usuário empresarial use o Power BI para se conectar aos respectivos dados no Salesforce e obtenha um dashboard imediatamente, sem usar o Power BI Desktop.For example, it's possible for a business user to use Power BI to connect to their data in Salesforce, and immediately get a dashboard, without use of Power BI Desktop.

Apenas duas das fontes habilitadas do DirectQuery estão disponíveis diretamente no serviço:Only two of the DirectQuery enabled-sources are available directly in the service:

  • SparkSpark
  • SQL Data Warehouse do AzureAzure SQL Data Warehouse

No entanto, recomendamos que qualquer uso do DirectQuery nessas duas fontes seja iniciado no Power BI Desktop.However, we recommend that any use of DirectQuery over those two sources start within Power BI Desktop. O motivo é que, quando a conexão é feita inicialmente no serviço do Power BI, muitas limitações básicas serão aplicadas.The reason is that when the connection is initially made in the Power BI service, many key limitations will apply. Embora o ponto de partida tenha sido fácil, no serviço do Power BI, há limitações no aprimoramento posterior do relatório resultante.While the start point was easy, starting in the Power BI service, there are limitations on enhancing the resulting report any further. Por exemplo, não é possível criar cálculos nem usar muitos recursos analíticos ou, até mesmo, atualizar os metadados para refletir as alterações no esquema subjacente.For example, it's not possible then to create any calculations, or use many analytical features, or even refresh the metadata to reflect any changes to the underlying schema.

Diretrizes para usar o DirectQuery com êxitoGuidance for using DirectQuery successfully

Se você pretende usar o DirectQuery, esta seção fornece algumas diretrizes de alto nível de como garantir o sucesso.If you're going to use DirectQuery, this section provides you with some high-level guidance on how to ensure success. As diretrizes desta seção são derivadas das implicações do uso do DirectQuery descritas neste artigo.The guidance in this section is derived from the implications of using DirectQuery that have been described in this article.

Desempenho da fonte de dados de back-endBack-end data source performance

Confirme se os visuais simples são atualizados em um tempo razoável.Validate that simple visuals refresh in a reasonable time. Um tempo de atualização deverá ocorrer dentro de 5 segundos para que a experiência interativa seja razoável.A refresh time should be within 5 seconds to have a reasonable interactive experience. Se os visuais estiverem levando mais de 30 segundos, é muito provável que outros problemas ocorrerão após a publicação do relatório.If visuals are taking longer than 30 seconds, it's highly likely that further issues will occur following publication of the report. Esses problemas podem tornar a solução impraticável.These issues can make the solution unworkable.

Se as consultas estiverem lentas, examine as consultas que estão sendo enviadas à fonte subjacente e o motivo do desempenho da consulta.If queries are slow, examine the queries being sent to the underlying source, and the reason for the query performance. Este artigo não aborda a grande variedade de melhores práticas de otimização de banco de dados em todo o conjunto de possíveis fontes subjacentes.This article doesn't cover the wide range of database optimization best practices across the full set of potential underlying sources. No entanto, ele aborda as práticas padrão de banco de dados aplicáveis à maioria das situações:This article does cover the standard database practices that apply to most situations:

  • As relações baseadas em colunas de inteiros geralmente têm melhor desempenho do que junções em colunas de outros tipos de dados.Relationships based on integer columns generally perform better than joins on columns of other data types.
  • Os índices apropriados devem ser criados.The appropriate indexes should be created. A criação de índice geralmente significa o uso de índices de repositório de coluna nas fontes que dão suporte a eles, por exemplo, o SQL Server.Index creation generally means the use of column store indexes in those sources that support them, for example, SQL Server.
  • Todas as estatísticas necessárias na fonte devem ser atualizadas.Any necessary statistics in the source should be updated.

Diretrizes de design de modeloModel Design Guidance

Ao definir o modelo, considere o uso destas diretrizes:When defining the model, consider following this guidance:

  • Evite consultas complexas no Editor de Consultas.Avoid complex queries in Query Editor. O Editor de Consultas converte uma consulta complexa em uma só consulta SQL.Query Editor translates a complex query into a single SQL query. A consulta individual é exibida na subseleção de cada consulta enviada a essa tabela.The single query appears in the subselect of every query sent to that table. Se essa consulta for complexa, poderá resultar em problemas de desempenho em todas as consultas enviadas.If that query is complex, it might result in performance issues on every query sent. A consulta SQL real de um conjunto de etapas pode ser obtida através da seleção da última etapa no Editor de Consultas e a escolha de Exibir Consulta Nativa no menu de contexto.The actual SQL query for a set of steps can be obtained by selecting the last step in Query Editor, and choosing View Native Query from the context menu.

  • Mantenha as medidas simples.Keep measures simple. Pelo menos, inicialmente, recomendamos limitar as medidas a agregações simples.At least initially, we recommend limiting measures to simple aggregates. Em seguida, se as medidas tiverem um desempenho satisfatório, medidas mais complexas poderão ser definidas, atentando-se, porém, ao desempenho de cada uma delas.Then if the measures operate in a satisfactory manner, more complex measures can be defined, but paying attention to the performance for each.

  • Evite relações em colunas calculadas.Avoid relationships on calculated columns. Essas diretrizes são relevantes para bancos de dados em que você precisa fazer junções de várias colunas.This guidance is relevant to databases where you need to do multi-column joins. Atualmente, o Power BI não permite que uma relação seja baseada em várias colunas como a FK/PK.Power BI today doesn't allow a relationship to be based on multiple columns as the FK/PK. A solução alternativa comum é concatenar as colunas usando uma coluna calculada e basear a junção nessa coluna.The common workaround is to concatenate the columns together using a calculated column, and base the join on that column. Embora essa solução alternativa seja razoável para dados importados, para o DirectQuery, ela resulta em uma junção em uma expressão.While this workaround is reasonable for imported data, for DirectQuery, it results in a join on an expression. Esse resultado geralmente impede o uso de qualquer índice e gera um baixo desempenho.That result commonly prevents use of any indexes, and leads to poor performance. A única solução alternativa é realmente materializar as várias colunas em uma única coluna no banco de dados subjacente.The only workaround is to actually materialize the multiple columns into a single column in the underlying database.

  • Evite relações em colunas uniqueidentifier.Avoid relationships on uniqueidentifier columns. O Power BI não dá suporte nativo ao tipo de dados uniqueidentifier.Power BI doesn't natively support a datatype of uniqueidentifier. A definição de uma relação entre colunas do tipo uniqueidentifier resulta em uma consulta com uma junção envolvendo uma conversão.Defining a relationship between columns of type uniqueidentifier column results in a query with a join involving a cast. Novamente, essa abordagem geralmente resulta em um baixo desempenho.Again, this approach commonly leads to poor performance. Até que esse caso seja especificamente otimizado, a única solução alternativa seria materializar colunas de um tipo alternativo no banco de dados subjacente.Until this case is specifically optimized, the only workaround is to materialize columns of an alternative type in the underlying database.

  • Ocultar a coluna to em relações.Hide the to column on relationships. A coluna to em relações é normalmente a chave primária na tabela to.The to column on relationships is commonly the primary key on the to table. Essa coluna deve estar oculta.That column should be hidden. Se estiver oculta, ela não será exibida na lista de campos e não poderá ser usada em visuais.If hidden, it doesn't appear in the field list and can't be used in visuals. Geralmente, as colunas em que as relações se baseiam são, na verdade, colunas do sistema, por exemplo, chaves alternativas em um data warehouse.Often the columns on which relationships are based are in fact system columns, for example, surrogate keys in a data warehouse. É sempre uma boa prática ocultar essas colunas.It's good practice to hide such columns anyway. Caso a coluna tenha significado, introduza uma coluna calculada que seja visível e que tenha uma expressão simples de ser igual à chave primária, como seguinte exemplo:If the column does have meaning, then introduce a calculated column that is visible, and that has a simple expression of being equal to the primary key, as in the following example:

        ProductKey_PK   (Destination of a relationship, hidden)
        ProductKey (= [ProductKey_PK],   visible)
        ProductName
        ...
    
  • Examine todos os usos de colunas calculadas e alterações de tipo de dados.Examine all uses of calculated columns and data type changes. O uso dessas funcionalidades não é necessariamente prejudicial.Use of these capabilities aren't necessarily harmful. Elas resultam nas consultas enviadas à fonte subjacente contendo expressões em vez de referências simples a colunas.They do result in the queries sent to the underlying source containing expressions rather than simple references to columns. Isso novamente pode resultar em uma não utilização de índices.That again might result in indexes not being used.

  • Evite usar filtragem cruzada bidirecional em relacionamentos.Avoid use of the bi-directional cross filtering on relationships. O uso de filtragem cruzada bidirecional pode levar a instruções de consulta que não têm um bom desempenho.Use of bi-directional cross filtering can lead to query statements that don't perform well.

  • Experimente com a configuração Pressupor integridade referencial.Experiment with setting Assume referential integrity. A configuração Pressupor Integridade Referencial em relações permite que as consultas usem instruções INNER JOIN em vez de OUTER JOIN.The Assume Referential Integrity setting on relationships enables queries to use INNER JOIN statements rather than OUTER JOIN. Essas diretrizes geralmente aprimoram o desempenho de consulta, embora elas dependam das especificações da fonte de dados.This guidance generally improves query performance, though it does depend on the specifics of the data source.

  • Não use a filtragem de dados relativos no Editor de Consultas.Don't use the relative data filtering in Query Editor. É possível definir a filtragem de data relativa no Editor de Consultas.It's possible to define relative date filtering in Query Editor. Por exemplo, para filtrar as linhas em que a data esteja nos últimos 14 dias.For example, to filter to the rows where the date is in the last 14 days.

    Filtrar as linhas dos últimos 14 dias

    No entanto, esse filtro é convertido em um filtro com base na data fixada, como no momento em que a consulta foi criada.However, this filter is translated into a filter based on the fixed date, as at the time the query was authored. Esse resultado pode ser observado na exibição da consulta nativa.This result can be seen from viewing the native query.

    Filtrar as linhas na consulta SQL nativa

    Provavelmente, esse resultado não é o que você desejava.This result is probably not what you wanted. Para garantir que o filtro seja aplicado com base na data, no momento em que o relatório é executado, aplique o filtro no relatório como um Filtro de Relatório.To ensure the filter is applied based on the date at the time the report runs, instead apply the filter in the report as a Report Filter. Atualmente, essa abordagem é feita com a criação de uma coluna calculada, o cálculo do número de dias atrás, o uso da função DAX DATE() e, em seguida, o uso dessa coluna calculada em um filtro.Currently, this approach would be done by creating a calculated column calculating the number of days ago, using the DAX DATE() function, and then using that calculated column in a filter.

Diretrizes de design de relatórioReport Design Guidance

Ao criar um relatório usando uma conexão do DirectQuery, siga estas diretrizes:When creating a report using a DirectQuery connection, follow this guidance:

  • Considere o uso das opções de Redução de consulta: o Power BI fornece opções no relatório para enviar menos consultas e desabilitar algumas interações que resultam em uma experiência insatisfatória, caso as consultas resultantes levem muito tempo para serem executadas.Consider use of Query Reduction options: Power BI provides options in the report to send fewer queries, and to disable certain interactions that would result in a poor experience if the resulting queries take a long time to run. Para acessar essas opções no Power BI Desktop, acesse Arquivo > Opções e configurações > Opções e selecione Redução de consulta.To access these options in Power BI Desktop, go to File > Options and settings > Options and select Query reduction.

    Opções de redução de consulta

    Marcar seleções da caixa em Redução de consulta permite desativar o realce cruzado em todo o relatório.Checking box selections on the Query reduction let you disable cross-highlighting throughout your entire report. Exiba também um botão Aplicar para seleções de filtro ou segmentações.You can also show an Apply button to slicers or filter selections. Essa abordagem permite que você faça muitas seleções de filtro e segmentação antes de aplicá-las.This approach lets you then make many slicer and filter selections before applying them. Nenhuma consulta é enviada até que você selecione o botão Aplicar na segmentação.No queries are sent until you select the Apply button on the slicer. As seleções em seguida podem ser usadas para filtrar os dados.Your selections can then be used to filter the data.

    Essas opções se aplicam ao relatório durante a sua interação com ele no Power BI Desktop.These options apply to your report while you interact with it in Power BI Desktop. Essas opções também se aplicam quando os usuários consomem o relatório no serviço do Power BI.These options also apply when your users consume the report in the Power BI service.

  • Aplique filtros primeiro: aplique todos os filtros adequados sempre no início da criação de um visual.Apply filters first: Always apply any applicable filters at the start of building a visual. Por exemplo, em vez de arrastar em TotalSalesAmount e ProductName e, em seguida, filtrar para determinado ano, aplique o filtro em Year logo no início.For example, rather than drag in TotalSalesAmount and ProductName, then filter to a particular year, apply the filter on Year at the very start. Cada etapa da criação de um visual envia uma consulta.Each step of building a visual sends a query. Embora seja possível fazer outra alteração antes que a primeira consulta seja concluída, essa abordagem ainda mantém uma carga desnecessária na fonte subjacente.Although it's possible to then make another change before the first query has completed, this approach still leaves unnecessary load on the underlying source. Ao aplicar os filtros no início, as consultas intermediárias serão geralmente menos dispendiosas.By applying filters early, it generally makes those intermediate queries less costly. Além disso, a não aplicação dos filtros no início pode resultar no limite de 1 milhão de linhas.Also, failing to apply filters early can result in hitting the 1 million row limit.

  • Limite o número de visuais em uma página: ao abrir uma página ou alterar uma segmentação ou um filtro no nível da página, todos os visuais de uma página são atualizados.Limit the number of visuals on a page: When you open a page or change a page level slicer or filter, all of the visuals on a page are refreshed. Também há um limite no número de consultas enviadas em paralelo.There's also a limit on the number of queries that are sent in parallel. Conforme o número de visuais aumenta, alguns dos visuais serão atualizados em série, aumentando o tempo necessário para atualizar a página inteira.As the number of visuals increases, some of the visuals will be refreshed in a serial manner, increasing the time taken to refresh the entire page. Por esse motivo, recomendamos que você limite o número de visuais em uma página individual e, em vez disso, tenha um número maior de páginas mais simples.For this reason, we recommend that you limit the number of visuals on a single page, and instead have more, simpler pages.

  • Considere desativar a interação entre visuais: Por padrão, as visualizações em uma página de relatório podem ser usadas para filtro cruzado e realce cruzado de outras visualizações na página.Consider switching off interaction between visuals: By default, visualizations on a report page can be used to cross-filter and cross-highlight the other visualizations on the page. Por exemplo, ao selecionar 1999 no gráfico de pizza, é feito o realce cruzado do gráfico de colunas para mostrar as vendas por categoria para 1999.For example, having selected 1999 on the pie chart, the column chart is cross highlighted to show the sales by category for 1999.

    Vários visuais com filtragem cruzada e realce cruzado

    A filtragem cruzada e o realce cruzado no DirectQuery exigem que as consultas sejam enviadas para a fonte subjacente.Cross-filtering and cross-highlighting in DirectQuery require queries to be submitted to the underlying source. A interação deverá ser desativada se o tempo necessário para responder às seleções dos usuários for excessivamente longo.The interaction should be switched off if the time taken to respond to users' selections would be unreasonably long. Você pode desativar essa interação.You can switch off this interaction. Desative a interação para todo o relatório, conforme descrito anteriormente nas opções de redução de consulta, ou caso a caso.Switch off the interaction for either the entire report, as described earlier for query reduction options, or on a case-by-case basis. Para obter mais informações, confira Como os visuais realizam filtragem cruzada entre si em um relatório do Power BI.For more information, see How visuals cross-filter each other in a Power BI report.

Além das sugestões anteriores, cada uma das seguintes funcionalidades de relatório pode causar problemas de desempenho:In addition to the previous suggestions, each of the following reporting capabilities can cause performance issues:

  • Filtros de medida: os visuais que contêm medidas ou agregações de colunas podem conter filtros nessas medidas.Measure filters: Visuals containing measures, or aggregates of columns, can contain filters in those measures. Por exemplo, o gráfico a seguir mostra SalesAmount por Categoria, mas só incluindo as categorias com mais de 20 milhões em vendas.For example, the following graphic shows SalesAmount by Category, but only including those categories with more than 20M of sales.

    Visual mostrando medidas que contêm filtros

    Esta abordagem faz com que duas consultas sejam enviadas à fonte subjacente:This approach results in two queries being sent to the underlying source:

    • A primeira consulta recupera as categorias que atendem à condição SalesAmount superior a 20 milhões.The first query retrieves the Categories meeting the condition, SalesAmount greater than 20 million.
    • Em seguida, a segunda consulta recupera os dados necessários para o visual, incluindo as categorias que atendem à condição na cláusula WHERE.The second query then retrieves the necessary data for the visual, including the categories that met the condition in the WHERE clause.

    Essa abordagem geralmente funciona bem se houver centenas ou milhares de categorias, como neste exemplo.This approach generally works well if there are hundreds or thousands of categories, as in this example. O desempenho poderá diminuir se o número de categorias for muito maior.Performance can degrade if the number of categories is much larger. A consulta falha para mais de um milhão de categorias que atendem à condição.The query fails for more than a million categories meeting the condition. O limite de 1 milhão de linhas foi abordado anteriormente.The 1 million row limit was discussed earlier.

  • Filtros TopN: filtros avançados podem ser definidos para realizar a filtragem somente dos valores N superiores ou inferiores classificados de acordo com uma medida.TopN filters: Advanced filters can be defined to filter on only the top or bottom N values ranked by some measure. Por exemplo, os filtros podem incluir as 10 principais categorias do visual anterior.For example, filters can include the top 10 categories in the previous visual. Novamente, essa abordagem fará com que duas consultas sejam enviadas à fonte subjacente.This approach again results in two queries being sent to the underlying source. No entanto, a primeira consulta retornará todas as categorias da fonte subjacente e, em seguida, os TopN serão determinados com base nos resultados retornados.However, the first query will return all categories from the underlying source, and then the TopN are determined based on the returned results. Dependendo da cardinalidade da coluna envolvida, essa abordagem poderá causar problemas de desempenho ou falhas de consulta, devido ao limite de 1 milhão de linhas.Depending on the cardinality of the column involved, this approach can lead to performance issues or query failures because of the 1 million row limit.

  • Valor mediano: Geralmente, qualquer agregação, como Sum ou Count Distinct, é enviada por push à fonte subjacente.Median: Generally, any aggregation, such as Sum or Count Distinct, is pushed to the underlying source. No entanto, isso não é verdadeiro para a mediana, pois, geralmente, não há suporte para essa agregação na fonte de subjacente.However, this fact isn't true for median, which this aggregate is generally not supported by the underlying source. Nesses casos, os dados de detalhes são recuperados da fonte subjacente e a mediana é calculada com base nos resultados retornados.In such cases, the detail data is retrieved from the underlying source, and the median calculated from the returned results. Essa abordagem é razoável quando a mediana deve ser calculada em relação a um número relativamente pequeno de resultados.This approach is reasonable when the median is to be calculated over a relatively small number of results. Ocorrerão problemas de desempenho ou falhas de consulta devido ao limite de 1 milhão de linhas se a cardinalidade for grande.Performance issues or query failures because of the 1 million row limit occur if the cardinality is large. Por exemplo, a Mediana da População do País pode ser razoável, ao contrário da Mediana do Preço de Vendas.For example, Median Country Population might be reasonable, but Median Sales Price might not be.

  • Filtros de texto avançados (contém e similares): ao filtrar uma coluna de texto, a filtragem avançada permite o uso de filtros como contém e começa com, por exemplo.Advanced text filters (contains and similar): When filtering on a text column, the advanced filtering allows filters like contains and begins with and so on. Esses filtros certamente poderão causar degradação no desempenho para algumas fontes de dados.These filters can certainly result in degraded performance for some data sources. Especificamente, o filtro padrão contains não deverá ser usado se houver necessidade de uma correspondência exata.In particular, the default contains filter shouldn't be used if what is required is an exact match. Embora os resultados possam ser os mesmos, dependendo dos dados reais, o desempenho poderá ser drasticamente diferente devido ao uso de índices.Although the results might be the same, depending on the actual data, the performance might be drastically different because of indexes.

  • Segmentações de dados de seleção múltipla: por padrão, as segmentações de dados permitem que seja realizada apenas uma única seleção.Multi select slicers: By default, slicers only allow a single selection to be made. Permitir seleções múltiplas em filtros pode causar alguns problemas de desempenho, pois o usuário seleciona um conjunto de itens na segmentação.Allowing multi-selection in filters can cause some performance issues, because the user selects a set of items in the slicer. Por exemplo, se o usuário selecionar os 10 produtos de interesse, cada nova seleção resultará no envio de consultas para a origem.For example, if the user selects the 10 products of interest, each new selection results in queries being sent to the source. Embora o usuário possa selecionar o próximo item antes da conclusão da consulta, essa abordagem resulta em uma carga extra na fonte subjacente.Although the user can select the next item before the query completes, this approach results in extra load on the underlying source.

  • Considere desativar os totais nos visuais: por padrão, tabelas e matrizes exibem totais e subtotais.Consider switching off totals on visuals: By default, tables and matrices display totals and subtotals. Em muitos casos, as consultas separadas devem ser enviadas para a fonte de dados subjacente para obter os valores para esses totais.In many cases, separate queries must be sent to the underlying source to obtain the values for such totals. Esse fato se aplica sempre ao usar a agregação DistinctCount ou em todos os casos ao usar o DirectQuery no SAP BW ou no SAP HANA.This fact applies whenever using DistinctCount aggregation, or in all cases when using DirectQuery over SAP BW or SAP HANA. Esses totais devem ser desativados usando o painel Formato.Such totals should be switched off by using the Format pane.

Opção de número máximo de conexões do DirectQueryMaximum number of connections option for DirectQuery

Você pode definir o número máximo de conexões abertas pelo DirectQuery para cada fonte de dados subjacente, que controla o número de consultas enviadas simultaneamente para cada fonte de dados.You can set the maximum number of connections DirectQuery opens for each underlying data source, which controls the number of queries concurrently sent to each data source.

O DirectQuery abre um número máximo padrão de 10 conexões simultâneas.DirectQuery opens a default maximum number of 10 concurrent connections. Você pode alterar o número máximo do arquivo atual no Power BI Desktop.You can change the maximum number for the current file in Power BI Desktop. Acesse Arquivo > Opções e Configurações > Opções.Go to File > Options and Settings > Options. Na seção Arquivo Atual no painel esquerdo, selecione DirectQuery.In the Current File section in the left pane, select DirectQuery.

Como definir o número máximo de conexões do DirectQuery

A configuração só é habilitada quando há, pelo menos, uma fonte do DirectQuery no relatório atual.The setting is only enabled when there's at least one DirectQuery source in the current report. O valor se aplica a todas as fontes do DirectQuery e às novas fontes do DirectQuery adicionadas ao mesmo relatório.The value applies to all DirectQuery sources, and to any new DirectQuery sources added to the same report.

O aumento de Máximo de conexões por fonte de dados garante que mais consultas, até o número máximo especificado, possam ser enviadas para a fonte de dados subjacente.Increasing Maximum connections per data source ensures more queries, up to the maximum number specified, can be sent to the underlying data source. Essa abordagem é útil quando muitos visuais estão em uma só página ou muitos usuários acessam um relatório ao mesmo tempo.This approach is useful when many visuals are on a single page, or many users access a report at the same time. Depois que o número máximo de conexões é atingido, as consultas seguintes são colocadas na fila até que uma conexão fique disponível.Once the maximum number of connections is reached, further queries are queued until a connection becomes available. O aumento desse limite resulta em mais carga na fonte subjacente e, portanto, a configuração não garante a melhoria do desempenho geral.Increasing this limit does result in more load on the underlying source, so the setting isn't guaranteed to improve overall performance.

Depois que um relatório é publicado, o número máximo de consultas simultâneas enviadas para a fonte de dados subjacente também depende dos limites fixados.Once a report is published, the maximum number of concurrent queries sent to the underlying data source also depend upon fixed limits. Os limites dependem do ambiente de destino no qual o relatório é publicado.The limits depend on the target environment to which the report is published. Diferentes ambientes, como o Power BI, o Power BI Premium ou o Servidor de Relatórios do Power BI, podem impor limites distintos.Different environments, such as Power BI, Power BI Premium, or Power BI Report Server, can impose different limits.

Observação

A configuração do número máximo de conexões do DirectQuery se aplicará a todas as fontes do DirectQuery quando metadados aprimorados forem habilitados. Ela será a configuração padrão de todos os modelos criados no Power BI Desktop a partir de outubro de 2020.The maximum number of DirectQuery connections setting applies to all DirectQuery sources when enhanced metadata is enabled, which is the default setting for all models created in Power BI Desktop beginning in October 2020.

Diagnosticar problemas de desempenhoDiagnosing performance issues

Esta seção descreve como diagnosticar problemas de desempenho ou obter informações mais detalhadas para permitir que os relatórios sejam otimizados.This section describes how to diagnose performance issues, or how to get more detailed information to allow the reports to be optimized.

Recomendamos que você inicie o diagnóstico de problemas de desempenho no Power BI Desktop, em vez de no serviço do Power BI.We recommended that you start diagnosis of performance issues in Power BI Desktop, rather than in the Power BI service. Problemas de desempenho geralmente se baseiam no desempenho da fonte subjacente.Performance issues are often based on the performance of the underlying source. Você pode identificar e diagnosticar problemas com mais facilidade no ambiente mais isolado do Power BI Desktop.You can more easily identify and diagnose issues in the more isolated environment of Power BI Desktop. Essa abordagem inicialmente elimina alguns componentes, como o gateway do Power BI.This approach initially eliminates certain components, such as the Power BI gateway. Se os problemas de desempenho estiverem ausentes do Power BI Desktop, investigue as especificidades do relatório no serviço do Power BI.If the performance issues are absent from Power BI Desktop, investigate the specifics of the report in the Power BI service. O Performance Analyzer é uma ferramenta útil para identificar problemas ao longo desse processo.The performance analyzer is a useful tool for identifying issues throughout this process.

Da mesma forma, recomendamos primeiro tentar isolar os problemas em um visual individual, em vez de muitos visuais em uma página.Similarly, we recommend to first try to isolate any issues to an individual visual, rather than many visuals on a page.

Digamos que as etapas nos parágrafos anteriores desta seção tenham sido removidas.Let's say the steps in the previous paragraphs in this section have been taken. Agora temos um só visual em uma página do Power BI Desktop que ainda está lento.We now have a single visual on a page in Power BI Desktop that is still sluggish. Use o Performance Analyzer para determinar as consultas enviadas para a fonte subjacente pelo Power BI Desktop.Use the performance analyzer to determine the queries that Power BI Desktop sends to the underlying source. Também é possível ver as informações de rastreamento e diagnóstico que podem ser emitidas pela fonte de dados subjacente.It's also possible to view traces and diagnostic information that might be emitted by the underlying data source. Os rastreamentos também podem conter detalhes úteis de como a consulta foi executada e como ela pode ser aprimorada.Traces might also contain useful details of how the query was executed, and how it can be improved.

Além disso, mesmo na ausência desses rastreamentos na fonte, é possível ver as consultas enviadas pelo Power BI, juntamente com os respectivos tempos de execução, conforme descrito na seção a seguir.Further, even in the absence of such traces from the source, it's possible to view the queries sent by Power BI, along with their execution times, as described in the next section.

Determinando as consultas enviadas pelo Power BI DesktopDetermining the queries sent by Power BI Desktop

Por padrão, o Power BI Desktop registra eventos durante uma determinada sessão em um arquivo de rastreamento chamado FlightRecorderCurrent.trc.By default, Power BI Desktop logs events during a given session to a trace file called FlightRecorderCurrent.trc.

Para algumas fontes do DirectQuery, esse log inclui todas as consultas enviadas para a fonte de dados subjacente.For some DirectQuery sources, this log includes all queries sent to the underlying data source. As fontes restantes do DirectQuery serão incluídas no futuro.The remaining DirectQuery sources will be included in the future. As seguintes fontes enviam consultas ao log:The following sources send queries to the log:

  • SQL ServerSQL Server
  • Banco de Dados SQL do AzureAzure SQL Database
  • SQL Data Warehouse do AzureAzure SQL Data warehouse
  • OracleOracle
  • TeradataTeradata
  • SAP HANASAP HANA

O arquivo de rastreamento pode ser encontrado na pasta AppData do usuário atual:The trace file can be found in the AppData folder for the current user:

<User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces<User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces

Para acessar essa pasta, no Power BI Desktop, selecione Arquivo > Opções e configurações > Opções e, em seguida, selecione Diagnóstico.To get to this folder, in Power BI Desktop, select File > Options and settings > Options, and then select Diagnostics. A seguinte caixa de diálogo é exibida:The following dialog appears:

Um link para abrir a pasta de rastreamentos

Ao selecionar Abrir a pasta de rastreamentos/despejo de memória em Opções de Diagnóstico, a seguinte pasta é aberta: <User>\AppData\Local\Microsoft\Power BI Desktop\Traces.When you select Open crash dump/traces folder, under Diagnostic Options, the following folder opens: <User>\AppData\Local\Microsoft\Power BI Desktop\Traces.

Ao navegar até a pasta pai dessa pasta, a pasta que contém AnalysisServicesWorkspaces é exibida, que conterá uma pasta do workspace para cada instância aberta do Power BI Desktop.Navigating to that folder's parent folder displays the folder containing AnalysisServicesWorkspaces, which will contain one workspace folder for every open instance of Power BI Desktop. Essas pastas são nomeadas com um sufixo de inteiro, como AnalysisServicesWorkspace2058279583.These folders are named with an integer suffix, such as AnalysisServicesWorkspace2058279583.

Dentro dessa pasta, há uma pasta \Data.Inside that folder is a \Data folder. Ela contém o arquivo de rastreamento FlightRecorderCurrent.trc da sessão atual do Power BI.It contains the trace file FlightRecorderCurrent.trc for the current Power BI session. A pasta de workspace correspondente é excluída quando a sessão associada do Power BI Desktop é encerrada.The corresponding workspace folder is deleted when the associated Power BI Desktop session ends.

Os arquivos de rastreamento podem ser lidos com a ferramenta SQL Server Profiler.The trace files can be read using the SQL Server Profiler tool. Obtenha-o como parte do download gratuito do SQL Server Management Studio.Get it as part of the free download SQL Server Management Studio.

Depois de baixar e instalar o SQL Server Management Studio, execute o SQL Server Profiler.Once you download and install SQL Server Management Studio, run SQL Server Profiler.

SQL Server Profiler

Para abrir o arquivo de rastreamento, execute as seguintes etapas:To open the trace file, take the following steps:

  1. No SQL Server Profiler, selecione Arquivo > Abrir > Arquivo de rastreamento.In SQL Server Profiler, select File > Open > Trace file.

  2. Insira o caminho até o arquivo de rastreamento da sessão atualmente aberta do Power BI, como abaixo: C:\Usuários<user>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data.Enter the path to the trace file for the currently open Power BI session, such as: C:\Users<user>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data.

  3. Abra FlightRecorderCurrent.trc.Open FlightRecorderCurrent.trc.

Todos os eventos da sessão atual são exibidos.All events from the current session are displayed. Um exemplo anotado é mostrado aqui, destacando os grupos de eventos.An annotated example is shown here, which highlights groups of events. Cada grupo tem os seguintes eventos:Each group has the following events:

  • Um evento Query Begin e Query End, que representam o início e o término de uma consulta DAX gerada pela interface do usuário, por exemplo, de um visual ou do preenchimento de uma lista de valores na interface do usuário do filtro.A Query Begin and Query End event, which represent the start and end of a DAX query generated by the UI, for example, from a visual, or from populating a list of values in the filter UI.
  • Um ou mais pares de eventos DirectQuery Begin e DirectQuery End, que representam uma consulta enviada à fonte de dados subjacente, como parte da avaliação da consulta DAX.One or more pairs of DirectQuery Begin and DirectQuery End events, which represent a query sent to the underlying data source, as part of evaluating the DAX query.

Várias consultas DAX podem ser executadas em paralelo, de modo que os eventos de diferentes grupos posam ser intercalados.Multiple DAX queries can run in parallel, so events from different groups can be interleaved. O valor da ActivityID pode ser usado para determinar quais eventos pertencem ao mesmo grupo.The value of the ActivityID can be used to determine which events belong to the same group.

SQL Server Profiler com os eventos Query Begin e Query End

Outras colunas de interesse são as seguintes:Other columns of interest are as follows:

  • TextData: os detalhes textuais do evento.TextData: The textual detail of the event. Para eventos Query Begin/End, o detalhe é a consulta DAX.For Query Begin/End events, the detail is the DAX query. Para eventos DirectQuery Begin/End, o detalhe é a consulta SQL enviada à fonte subjacente.For DirectQuery Begin/End events, the detail is the SQL query sent to the underlying source. O TextData do evento atualmente selecionado também é exibido na região, na parte inferior.The TextData for the currently selected event is also displayed in the region at the bottom.
  • EndTime: a hora em que o evento foi concluído.EndTime: The time when the event completed.
  • Duration: o tempo, em milissegundos, necessário para executar a consulta DAX ou SQL.Duration: The duration, in milliseconds, taken to execute the DAX or SQL query.
  • Error: indica se ocorreu um erro e, nesse caso, o evento também será exibido em vermelho.Error: Indicates if an error occurred, in which case the event is also displayed in red.

Na imagem acima, algumas das colunas menos interessantes foram reduzidas, a fim de permitir que outras colunas sejam vistas com mais facilidade.In the image above, some of the less interesting columns have been narrowed, to allow other columns to be seen more easily.

Recomendamos a seguinte abordagem para capturar um rastreamento e ajudar a diagnosticar um possível problema de desempenho:We recommend the following approach to capturing a trace to help diagnose a potential performance issue:

  • Abra uma sessão individual do Power BI Desktop, para evitar a confusão de ter várias pastas de workspace.Open a single Power BI Desktop session, to avoid the confusion of multiple workspace folders.
  • Execute o conjunto de ações desejadas no Power BI Desktop.Do the set of actions of interest in Power BI Desktop. Inclua algumas ações adicionais, para garantir que os eventos desejados sejam liberados no arquivo de rastreamento.Include a few additional actions, to ensure that the events of interest are flushed into the trace file.
  • Abra o SQL Server Profiler e examine o rastreamento, conforme descrito anteriormente.Open SQL Server Profiler and examine the trace, as described previously. Lembre-se de que o fechamento do Power BI Desktop exclui o arquivo de rastreamento.Remember that closing Power BI Desktop deletes the trace file. Além disso, as ações adicionais no Power BI Desktop não são exibidas imediatamente.Also, further actions in Power BI Desktop don't immediately appear. O arquivo de rastreamento deve ser fechado e reaberto para ver os novos eventos.The trace file should be closed and reopened to see the new events.
  • Mantenha as sessões individuais razoavelmente pequenas, talvez 10 segundos de ações, não centenas.Keep individual sessions reasonably small, perhaps 10 seconds of actions, not hundreds. Essa abordagem facilita a interpretação do arquivo de rastreamento.This approach makes it easier to interpret the trace file. Também há um limite no tamanho do arquivo de rastreamento.There's also a limit on the size of the trace file. Em sessões longas, há a possibilidade de remoção dos eventos iniciais.For long sessions, there's a chance of early events being dropped.

Noções básicas sobre a forma da consulta enviada pelo Power BI DesktopUnderstanding the form of query sent by Power BI Desktop

O formato geral das consultas criadas e enviadas pelo Power BI Desktop usa subseleções de cada uma das tabelas referenciadas.The general format of queries created and sent by Power BI Desktop use subselects for each of the tables referenced. A consulta do Editor de Consultas define a subseleção.The Query Editor query defines the subselect. Por exemplo, suponha as seguintes tabelas TPC-DS no SQL Server:For example, assume the following TPC-DS tables in SQL Server:

Tabelas do TPC-DS no SQL Server

Considere a consulta a seguir:Consider the following query:

Uma consulta de exemplo

Essa consulta tem como resultado o seguinte visual:That query results in the following visual:

Resultado visual de uma consulta

A atualização desse visual resultará na consulta SQL mostrada aqui.Refreshing that visual will result in the SQL query shown here. Como você pode ver, há três subseleções para Web Sales, Item e Date_dim, e cada uma retorna todas as colunas na respectiva tabela, embora, na realidade, apenas quatro colunas sejam referenciadas pelo visual.As you can tell, there are three subselects for Web Sales, Item, and Date_dim, that each return all the columns on the respective table, even though only four columns are actually referenced by the visual. Essas consultas nas subseleções que estão sombreadas são exatamente o resultado das consultas definidas no Editor de Consultas.These queries in the subselects that are shaded are exactly the result of the queries defined in Query Editor. O uso de subseleções dessa maneira não afetou o desempenho das fontes de dados compatíveis com o DirectQuery até o momento.Use of subselects in this manner hasn't been found to impact performance for the data sources so far supported for DirectQuery. Fontes de dados como o SQL Server simplesmente otimizam as referências para as outras colunas.Data sources like SQL Server optimize away the references to the other columns.

O Power BI emprega esse padrão porque a consulta SQL usada pode ser fornecida diretamente pelo analista.Power BI employs this pattern because the SQL query used can be provided directly by the analyst. Ela é usada "conforme fornecida", sem que haja uma tentativa de reescrevê-la.It's used "as provided", without an attempt to rewrite it.

Consulta SQL usada conforme fornecido

Próximas etapasNext steps

Este artigo descreve aspectos do DirectQuery que são comuns entre todas as fontes de dados.This article describes aspects of DirectQuery that are common across all data sources. Há determinados detalhes que são específicos a fontes individuais.There are certain details that are specific to individual sources. Confira os seguintes artigos que abordam fontes específicas:See the following articles covering specific sources:

Para obter mais informações sobre o DirectQuery, confira o seguinte recurso:For more information about DirectQuery, see the following resource: