Informazioni sull'uso di DirectQuery in Power BIAbout using DirectQuery in Power BI

Quando si usa Power BI Desktop o il servizio Power BI è possibile connettersi a tutti i tipi di origini dati ed effettuare tali connessioni dati in modi diversi.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. È possibile importare dati in Power BI, operazione che rappresenta il modo più comune per ottenere i dati, oppure connettersi direttamente ai dati nel repository di origine tramite 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. Questo articolo descrive le funzionalità di DirectQuery:This article describes DirectQuery capabilities:

  • Diverse opzioni di connettività di DirectQueryDifferent connectivity options for DirectQuery
  • Indicazioni per i casi in cui è opportuno preferire DirectQuery all'importazioneGuidance for when you should consider using DirectQuery rather than import
  • Svantaggi dell'uso di DirectQueryDrawbacks of using DirectQuery
  • Procedure consigliate per l'uso di DirectQueryBest practices for using DirectQuery

Seguire le procedure consigliate per l'uso dell'importazione rispetto a DirectQuery:Follow best practices for using import versus DirectQuery:

  • È opportuno importare i dati in Power BI laddove possibile.You should import data to Power BI wherever possible. L'importazione sfrutta il motore di query con prestazioni elevate di Power BI e offre un'esperienza altamente interattiva e completa.Importing takes advantage of the high performance query engine of Power BI, and provides a highly interactive and fully featured experience.
  • Se gli obiettivi non possono essere soddisfatti con l'importazione dei dati, prendere in considerazione l'uso di DirectQuery.If your goals can't be met by importing data, consider using DirectQuery. Se ad esempio i dati cambiano di frequente e i report devono riflettere i dati più recenti, DirectQuery può essere l'opzione ottimale.For example, if the data is changing frequently and reports must reflect the latest data, DirectQuery may be best. L'uso di DirectQuery è tuttavia possibile solo quando l'origine dati sottostante può generare query interattive (meno di 5 secondi per la tipica query di aggregazione) ed è in grado di gestire il carico di query che verrà generato.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. È anche necessario considerare attentamente le limitazioni relative all'uso di DirectQuery.Additionally, the list of limitations for the use of DirectQuery should be considered carefully.

Il set di funzionalità offerte da Power BI per l'importazione e per DirectQuery si evolve nel tempo.The set of capabilities offered by Power BI for import and DirectQuery evolve over time. I cambiamenti includeranno una maggiore flessibilità nell'uso dei dati importati, in modo che l'importazione possa essere usata in un numero più elevato di casi ed eliminando alcuni degli svantaggi di 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. A prescindere dai miglioramenti, le prestazioni dell'origine dati sottostante rimangono uno degli aspetti più importanti da considerare nell'uso di DirectQuery.Regardless of improvements, when using DirectQuery, the performance of the underlying data source always remains a major consideration. Se l'origine dati sottostante è lenta, l'uso di DirectQuery per tale origine continuerà a essere impossibile.If that underlying data source is slow, using DirectQuery for that source will remain unfeasible.

Questo articolo descrive DirectQuery con Power BI e non con SQL Server Analysis Services.This article covers DirectQuery with Power BI, and not SQL Server Analysis Services. DirectQuery è anche una funzionalità di SQL Server Analysis Services.DirectQuery is also a feature of SQL Server Analysis Services. Molti dei dettagli descritti in questo articolo si applicano a questa funzionalità,Many of the details described in this article apply to that feature. ma esistono alcune differenze importanti.There are also important differences. Per informazioni sull'uso di DirectQuery con SQL Server Analysis Services, vedere DirectQuery in SQL Server 2016 Analysis Services.For information about using DirectQuery with SQL Server Analysis Services, see DirectQuery in SQL Server 2016 Analysis Services.

Questo articolo illustra il flusso di lavoro consigliato per DirectQuery, in cui il report viene creato in Power BI Desktop, ma descrive anche la connessione diretta nel servizio 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.

Modalità di connettività di Power BIPower BI connectivity modes

Power BI si connette a un numero elevato di origini dati diverse, tra cui:Power BI connects to a large number of varied data sources, encompassing:

  • Servizi online (Salesforce, Dynamics 365 e altri)Online services (Salesforce, Dynamics 365, others)
  • Database (SQL Server, Access, Amazon Redshift e altri)Databases (SQL Server, Access, Amazon Redshift, others)
  • File semplici (Excel, JSON e altri)Simple files (Excel, JSON, others)
  • Altre origini dati (Spark, siti Web, Microsoft Exchange e altri)Other data sources (Spark, Web sites, Microsoft Exchange, others)

Per queste origini, è possibile importare i dati in Power BI.For these sources, it's possible to import the data to Power BI. Per alcune è anche possibile connettersi con DirectQuery.For some, it's also possible to connect using DirectQuery. Per un riepilogo delle origini che supportano DirectQuery, vedere Origini dati supportate da DirectQuery.For a summary of the sources that support DirectQuery, see Data Sources supported by DirectQuery. Altre origini supporteranno DirectQuery in futuro, principalmente quelle che si prevede possano fornire performance soddisfacenti per le query interattive.More sources will be DirectQuery enabled in the future, focusing primarily on sources that can be expected to deliver good interactive query performance.

SQL Server Analysis Services è un caso particolare.SQL Server Analysis Services is a special case. Quando ci si connette a SQL Server Analysis Services, è possibile scegliere di importare i dati o usare una connessione dinamica.When connecting to SQL Server Analysis Services, you can choose to import the data or use a live connection. L'uso di una connessione dinamica è simile all'uso di DirectQuery.Using a live connection is similar to DirectQuery. Non vengono importati dati e viene sempre eseguita una query sull'origine dati sottostante per aggiornare un oggetto visivo.No data is imported and the underlying data source is always queried to refresh a visual. Una connessione dinamica si differenzia per molti altri aspetti, pertanto viene usato un termine diverso, appunto connessione dinamica, rispetto a DirectQuery.A live connection is different in many other regards, so a different term, live connection versus DirectQuery, is used.

Queste sono quindi le tre opzioni per la connessione ai dati: importazione, DirectQuery e connessione dinamica.These three options for connecting to data: import, DirectQuery, and live connection.

Connessioni di importazioneImport connections

Per l'importazione, quando si usa Recupera dati in Power BI Desktop per connettersi a un'origine dati come SQL Server, il comportamento della connessione è il seguente: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 l'esperienza di recupero dati iniziale, ogni tabella del set selezionato definisce una query che restituisce un set di dati.During the initial Get Data experience, the set of tables selected each define a query that will return a set of data. Queste query possono essere modificate prima di caricare i dati, ad esempio per applicare filtri, aggregare i dati o unire tabelle diverse.Those queries can be edited before loading the data, for example, to apply filters, or aggregate the data, or join different tables.
  • Durante il caricamento, tutti i dati definiti da tali query verranno importati nella cache di Power BI.Upon load, all of the data defined by those queries will be imported into the Power BI cache.
  • Durante la compilazione di un oggetto visivo in Power BI Desktop verrà eseguita una query sui dati importati.Upon building a visual within Power BI Desktop, the imported data will be queried. L'archivio di Power BI assicura che la query sarà rapida.The Power BI store ensures the query will be fast. Tutte le modifiche all'oggetto visivo vengono applicate immediatamente.All changes to the visual are reflected immediately.
  • Eventuali modifiche ai dati sottostanti non vengono propagate agli oggetti visivi.Any changes to the underlying data aren't reflected in any visuals. È necessario selezionare Aggiorna per reimportare i dati.It's necessary to Refresh to reimport data.
  • Al momento della pubblicazione del report come file con estensione pbix nel servizio Power BI, viene creato e caricato un set di dati nel servizio 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. I dati importati sono inclusi con tale set di dati.The imported data is included with that dataset. È quindi possibile pianificare l'aggiornamento dei dati, ad esempio, per reimportare i dati ogni giorno.It's then possible to schedule refresh of that data, for example, to reimport the data every day. A seconda del percorso dell'origine dati potrebbe essere necessario configurare un gateway dati locale.Depending upon the location of the original data source, it might be necessary to configure an on-premises data gateway.
  • Quando si apre un report esistente nel servizio Power BI oppure si crea un nuovo report, viene di nuovo eseguita una query sui dati importati, garantendo l'interattività.When opening an existing report in the Power BI service, or authoring a new report, the imported data is queried again, ensuring interactivity.
  • È possibile aggiungere oggetti visivi o intere pagine del report come riquadri del dashboard.Visuals, or entire report pages, can be pinned as dashboard tiles. I riquadri vengono aggiornati automaticamente ogni volta che viene aggiornato il set di dati sottostante.The tiles automatically refresh whenever the underlying dataset refreshes.

Connessioni DirectQueryDirectQuery connections

Per DirectQuery, quando si usa Recupera dati in Power BI Desktop per connettersi a un'origine dati, il comportamento della connessione è il seguente: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 l'esperienza di recupero dati iniziale viene selezionata l'origine.During the initial Get Data experience, the source is selected. Per le origini relazionali viene selezionato un set di tabelle, ognuna delle quali definisce una query che restituisce un set di dati in modo logico.For relational sources, a set of tables are selected and each still define a query that logically returns a set of data. Per le origini multidimensionali, ad esempio SAP BW, viene selezionata solo l'origine.For multidimensional sources, like SAP BW, only the source is selected.
  • Durante il caricamento non vengono tuttavia importati dati nell'archivio di Power BI.However, upon load, no data is imported into the Power BI store. Durante la compilazione di un oggetto visivo in Power BI Desktop vengono invece inviate query all'origine dati sottostante per recuperare i dati necessari.Instead, upon building a visual within Power BI Desktop, queries are sent to the underlying data source to retrieve the necessary data. Il tempo impiegato per aggiornare l'oggetto visivo dipende dalle prestazioni dell'origine dati sottostante.The time taken to refresh the visual depends on the performance of the underlying data source.
  • Eventuali modifiche ai dati sottostanti non vengono propagate immediatamente agli oggetti visivi esistenti.Any changes to the underlying data aren't immediately reflected in any existing visuals. È sempre necessario eseguire l'aggiornamento.It's still necessary to refresh. Le query necessarie vengono inviate nuovamente per ogni oggetto visivo e questo viene aggiornato nel modo appropriato.The necessary queries are resent for each visual, and the visual is updated as necessary.
  • Al momento della pubblicazione del report nel servizio Power BI, viene anche in questo caso creato un set di dati nel servizio Power BI, come avviene per l'importazione.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. Il set di dati non include tuttavia dati.However, no data is included with that dataset.
  • Quando si apre un report esistente nel servizio Power BI oppure si crea un nuovo report, viene di nuovo eseguita una query sull'origine dati sottostante per recuperare i dati necessari.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. A seconda del percorso dell'origine dati originale, potrebbe essere necessario configurare un gateway dati locale, come nel caso della modalità di importazione se i dati vengono aggiornati.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.
  • È possibile aggiungere oggetti visivi o intere pagine del report come riquadri del dashboard.Visuals, or entire report pages, can be pinned as Dashboard tiles. Per garantire che l'apertura di un dashboard sia rapida, i riquadri vengono aggiornati automaticamente secondo una pianificazione, ad esempio ogni ora.To ensure that opening a dashboard is fast, the tiles are automatically refreshed on a schedule, for example, every hour. È possibile gestire la frequenza di aggiornamento in modo da riflettere la frequenza di modifica dei dati e in che misura sia importante visualizzare i dati più recenti.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. Quando si apre un dashboard, i riquadri riflettono i dati al momento dell'ultimo aggiornamento e non necessariamente le modifiche più recenti apportate all'origine sottostante.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. È possibile aggiornare un dashboard aperto per visualizzare sempre il contenuto più recente.You can refresh an open dashboard to ensure it's current.

Connessioni dinamicheLive connections

Quando ci si connette a SQL Server Analysis Services, è disponibile un'opzione per importare dati dal modello di dati selezionato o connettersi dinamicamente al modello stesso.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 si usa l'importazione, si definisce una query su tale origine SQL Server Analysis Services esterna e i dati vengono importati come di consueto.If you use import, you define a query against that external SQL Server Analysis Services source, and the data is imported as normal. Se si usa la connessione dinamica, non viene definita alcuna query e nell'elenco dei campi viene visualizzato l'intero modello esterno.If you use connect live, there's no query defined, and the entire external model is shown in the field list.

La situazione descritta nel paragrafo precedente si applica anche alla connessione alle origini seguenti, ad eccezione del fatto che non è possibile importare i dati: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:

  • Set di dati di Power BI, ad esempio quando ci si connette a un set di dati di Power BI creato in precedenza e pubblicato nel servizio, per creare un nuovo report correlato.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.

Il comportamento dei report su SQL Server Analysis Services al momento della pubblicazione nel servizio Power BI è simile a quello dei report di DirectQuery sotto gli aspetti seguenti: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:

  • Quando si apre un report esistente nel servizio Power BI oppure si crea un nuovo report, viene eseguita una query sull'origine dati SQL Server Analysis Services sottostante. L'operazione può richiedere un gateway dati locale.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.
  • I riquadri del dashboard vengono aggiornati automaticamente in base a una pianificazione, ad esempio ogni ora.Dashboard tiles are automatically refreshed on a schedule, such as every hour.

Esistono anche alcune differenze importanti.There are also important differences. Ad esempio, per le connessioni dinamiche l'identità dell'utente che apre il report viene sempre passata all'origine SQL Server Analysis Services sottostante.For instance, for live connections, the identity of the user opening the report is always passed to the underlying SQL Server Analysis Services source.

Terminati questi confronti, ci si concentrerà ora esclusivamente su DirectQuery per il resto di questo articolo.With these comparisons out of the way, let's focus solely on DirectQuery for the rest of this article.

Situazioni in cui è utile DirectQueryWhen is DirectQuery useful?

La tabella seguente descrive alcuni scenari in cui la connessione con DirectQuery può essere particolarmente utile.The following table describes scenarios where connecting with DirectQuery could be especially useful. Sono inclusi casi in cui lasciare i dati nell'origine originale è considerato vantaggioso.It includes cases where leaving the data in the original source would be considered beneficial. La descrizione indica anche se lo scenario specificato è disponibile in Power BI.The description includes a discussion about whether the specified scenario is available in Power BI.

LimitazioneLimitation DescrizioneDescription
I dati cambiano di frequente e sono necessari report quasi in tempo realeData is changing frequently, and near real-time reporting is needed I modelli con dati importati possono essere aggiornati al massimo una volta all'ora (con una frequenza maggiore con le sottoscrizioni di Power BI Pro o 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 i dati cambiano continuamente ed è necessario che i report visualizzino i dati più recenti, l'importazione con l'aggiornamento pianificato potrebbe non soddisfare questi requisiti.Tf 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. È possibile trasmettere dati direttamente in Power BI, anche se esistono limiti ai volumi di dati supportati in questo caso.You can stream data directly into Power BI, though there are limits on the data volumes supported for this case.

Se si usa DirectQuery, invece, aprendo o aggiornando un report o un dashboard vengono sempre visualizzati i dati più recenti dell'origine.Using DirectQuery, by contrast, means that opening or refreshing a report or dashboard always shows the latest data in the source. Inoltre, i riquadri del dashboard possono essere aggiornati più frequentemente, anche ogni 15 minuti.Additionally, the dashboard tiles can be updated more frequently, as often as every 15 minutes.
Dati di dimensioni molto grandiData is very large Se i dati hanno dimensioni molto grandi, non è fattibile importarli tutti.If the data is very large, it wouldn't be feasible to import it all. DirectQuery, al contrario, non richiede il trasferimento di molti dati perché le query vengono eseguite localmente.DirectQuery, by contrast, requires no large transfer of data, because it's queried in place.

I dati di grandi dimensioni possono tuttavia anche comportare che le query sull'origine sottostante risultino troppo lente, come descritto in Implicazioni dell'uso di 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. Non è sempre necessario importare i dati dettagliati completi.You don't always have to import the full detailed data. È invece possibile preaggregare i dati durante l'importazione.Instead, the data can be pre-aggregated during import. L'editor di query semplifica la preaggregazione durante l'importazione.The Query Editor makes it easy to pre-aggregate during import. In casi estremi è possibile importare esattamente i dati di aggregazione necessari per ogni oggetto visivo.In the extreme, it would be possible to import exactly the aggregate data needed for each visual. Anche se DirectQuery è l'approccio più semplice per i dati di grandi dimensioni, l'importazione di dati aggregati può rappresentare una soluzione se l'origine sottostante è troppo lenta.While DirectQuery is the simplest approach to large data, importing aggregate data might offer a solution if the underlying source is too slow.
Le regole di sicurezza vengono definite nell'origine sottostanteSecurity rules are defined in the underlying source Quando i dati vengono importati, Power BI si connette all'origine dati usando le credenziali dell'utente corrente da Power BI Desktop oppure le credenziali definite nell'ambito della configurazione dell'aggiornamento pianificato dal servizio 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. Quando si pubblica e si condivide questo report con dati in modalità importazione è necessario prestare attenzione a condividerlo solo con gli utenti autorizzati a visualizzare gli stessi dati oppure definire la sicurezza a livello di riga nell'ambito del set di dati.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.

DirectQuery consente il passaggio delle credenziali di un visualizzatore di report all'origine sottostante e l'applicazione di regole di sicurezza nell'origine.DirectQuery allows for a report viewer's credentials to be passed through to the underlying source and security rules to be applied there. L'accesso Single Sign-On è supportato per origini dati SQL Azure e tramite il gateway dati ai server SQL locali.Single sign-on is supported to SQL Azure datasources, and through the data gateway to on-premises SQL servers. Questo argomento è trattato in modo più dettagliato in Panoramica dell'accesso Single Sign-On (SSO) per i gateway in Power BI.This is covered in more detail in Overview of single sign-on (SSO) for gateways in Power BI.
Limitazioni di sovranità dei datiData sovereignty restrictions apply Alcune organizzazioni hanno criteri di sovranità dei dati, ovvero i dati non possono uscire dall'organizzazione.Some organizations have policies around data sovereignty, meaning that data can't leave the organization premises. Una soluzione basata sull'importazione potrebbe chiaramente presentare problemi.A solution based on import would clearly present issues. Con DirectQuery, al contrario, i dati rimangono nell'origine sottostante.By contrast, with DirectQuery that data remains in the underlying source.

Tuttavia, anche con DirectQuery, alcune cache di dati a livello di oggetto visivo vengono conservate nel servizio Power BI a causa dell'aggiornamento pianificato dei riquadri.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.
L'origine dati sottostante è un'origine OLAP contenente misureUnderlying data source is an OLAP source, containing measures Se l'origine dati sottostante contiene misure, come SAP HANA o SAP Business Warehouse, l'importazione dei dati presenta altri problemi.If the underlying data source contains measures, such as SAP HANA or SAP Business Warehouse, then importing the data brings other issues. Ciò significa che i dati importati si trovano a un determinato livello di aggregazione come definito dalla query,It means that the data imported is at a particular level of aggregation, as defined by the query. ad esempio la misurazione di TotalSales per classe, anno e città.For example, measures TotalSales by Class, Year, and City. Quindi, se viene creato un oggetto visivo che richiede dati a un livello di aggregazione superiore, ad esempio TotalSales per anno, il valore di aggregazione verrà ulteriormente aggregato.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. Questa aggregazione funziona per le misure additive, come Sum e Min, ma rappresenta un problema per le misure non additive, come 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.

Per ottenere facilmente i dati aggregati corretti, in base a quanto richiesto dall'oggetto visivo specifico, direttamente dall'origine, si dovrebbe inviare query per ogni oggetto visivo, come in 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.

Quando ci si connette a SAP Business Warehouse (BW), la scelta di DirectQuery consente questo trattamento delle misure.When connecting to SAP Business Warehouse (BW), choosing DirectQuery allows for this treatment of measures. Per informazioni su SAP BW, vedere DirectQuery e SAP BW.For information about SAP BW, see DirectQuery and SAP BW.

Tuttavia, al momento DirectQuery in SAP HANA tratta le misure come un'origine relazionale e offre un comportamento simile all'importazione.However, currently DirectQuery over SAP HANA treats it the same as a relational source, and provides similar behavior to import. Questo approccio è illustrato nei dettagli in DirectQuery e SAP HANA.This approach is covered further in DirectQuery and SAP HANA.

Riepilogando, date le attuali funzionalità di DirectQuery in Power BI, gli scenari in cui offre vantaggi sono i seguenti:In summary, given the current capabilities of DirectQuery in Power BI, it offers the benefits in the following scenarios:

  • I dati cambiano di frequente e sono necessari report quasi in tempo reale.Data is changing frequently, and near real-time reporting is needed.
  • Vengono gestiti dati di dimensioni molto grandi, senza la necessità di preaggregare.Handling very large data, without the need to pre-aggregate.
  • Si applicano limitazioni a livello di sovranità dei dati.Data sovereignty restrictions apply.
  • L'origine è multidimensionale e contiene misure, ad esempio SAP BW.The source is a multidimensional source containing measures, such as SAP BW.

I dettagli nell'elenco precedente si riferiscono all'uso del solo Power BI.The details in the previous list relate to the use of Power BI alone. In alternativa, si potrebbe usare un modello esterno di SQL Server Analysis Services o Azure Analysis Services per importare i dati,Instead, you could use an external SQL Server Analysis Services or Azure Analysis Services model to import data. usando quindi Power BI per connettersi al modello.Then use Power BI to connect to that model. Anche se questo approccio richiede un'ulteriore configurazione, offre maggiore flessibilità.While that approach would require additional configuration, it does provide greater flexibility. È possibile importare volumi di dati molto più grandi.Much larger volumes of data can be imported. Non esistono limitazioni alla frequenza di aggiornamento dei dati.There's no restriction on how frequently the data can be refreshed.

Implicazioni dell'uso di DirectQueryImplications of using DirectQuery

L'uso di DirectQuery ha implicazioni potenzialmente negative, come descritto in questa sezione.Use of DirectQuery does have potentially negative implications, as detailed in this section. Alcune di queste limitazioni differiscono leggermente a seconda dell'origine usata.Some of those limitations are slightly different depending upon the exact source that is being used. Queste limitazioni vengono illustrate laddove applicabile e le origini sostanzialmente diverse vengono trattate in altri articoli.We address limitations where applicable, and separate articles cover those sources that are substantially different.

Prestazioni e carico sull'origine sottostantePerformance and load on the underlying source

Quando si usa DirectQuery, l'esperienza complessiva dipende molto dalle prestazioni dell'origine dati sottostante.When using DirectQuery, the overall experience depends very much on the performance of the underlying data source. Se l'aggiornamento di ogni oggetto visivo, ad esempio dopo la modifica del valore di un filtro dei dati, impiega pochi secondi, in genere meno di cinque, l'esperienza è ragionevole.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. Potrebbe però apparire lenta rispetto alla risposta immediata quando si importano i dati in Power BI.The experience might feel sluggish compared to the immediate response when importing the data to Power BI. Se a causa della lentezza dell'origine l'aggiornamento dei singoli oggetti visivi impiega più di dieci secondi, l'esperienza diventa decisamente insufficiente.If the slowness of the source causes individual visuals to take longer than tens of seconds, the experience becomes extremely poor. Può persino verificarsi il timeout delle query.Queries may even time out.

Oltre alle prestazioni dell'origine sottostante, prestare attenzione al carico posto sull'origine.Along with the performance of the underlying source, pay attention to the load placed upon the source. Il carico ha infatti un impatto sulle prestazioni.Load impacts performance. Per ogni utente che apre un report condiviso e ogni riquadro del dashboard che viene aggiornato viene inviata almeno una query per oggetto visivo all'origine sottostante.Each user who opens a shared report, and each dashboard tile that refreshes, sends at least one query per visual to the underlying source. L'origine deve quindi poter gestire questo carico di query pur mantenendo prestazioni accettabili.This fact requires that the source can handle such a query load, while still maintaining reasonable performance.

Implicazioni per la sicurezza in caso di combinazione di origini datiSecurity implications when combining data sources

È possibile usare più origini dati in un modello DirectQuery, esattamente come quando si importano i dati, tramite la funzionalità Modelli compositi.It's possible to use multiple data sources in a DirectQuery model, just as when you import data, by using the Composite models feature. Quando si usano più origini dati, è importante comprendere il modo in cui i dati vengono spostati tra le origini dati sottostanti, oltre alle implicazioni per la sicurezza.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.

Trasformazione dei dati limitataLimited data transformations

Analogamente, sono presenti limitazioni nelle trasformazioni dei dati che possono essere applicate all'interno dell'editor di query.Similarly, there are limitations in the data transformations that can be applied within Query Editor. Con i dati importati è possibile applicare facilmente un set di trasformazioni avanzato per pulire e modificare la forma dei dati prima di usarli per creare oggetti visivi, ad esempio per l'analisi di documenti JSON o la trasformazione tramite Pivot da un modulo basato su colonne a un modulo basato su righe.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. Queste trasformazioni sono più limitate in DirectQuery.Those transformations are more limited in DirectQuery.

Quando ci si connette a un'origine OLAP come SAP Business Warehouse, non è possibile definire alcuna trasformazione e l'intero modello esterno proviene dall'origine.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. Per le origini relazionali, come SQL Server, è comunque possibile definire un set di trasformazioni per ogni query, ma tali trasformazioni sono limitate per motivi di prestazioni.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.

Qualsiasi trasformazione di questo tipo dovrà essere applicata a ogni query per l'origine sottostante, anziché una sola volta al momento dell'aggiornamento dei dati, quindi saranno possibili solo le trasformazioni che possono essere ragionevolmente convertite in una singola query 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 si usa una trasformazione troppo complessa, si riceve un errore che indica che la trasformazione deve essere eliminata oppure che è necessario impostare l'importazione del modello.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.

Inoltre, la query ottenuta dalla finestra di dialogo Recupera dati o dall'editor di query verrà usata in una selezione secondaria delle query generate e inviata per recuperare i dati necessari per un oggetto visivo.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. La query definita nell'editor di query deve essere valida in questo contesto.The query defined in Query Editor must be valid within this context. In particolare, non è possibile usare una query con espressioni di tabella comuni o che richiami stored procedure.In particular, it's not possible to use a query using Common Table Expressions, nor one that invokes Stored Procedures.

Limitazioni di modellazioneModeling limitations

In questo contesto il termine modellazione indica l'azione di modifica e arricchimento dei dati non elaborati, nell'ambito della creazione di un report che usa tali dati.The term modeling in this context means the act of refining and enriching the raw data, as part of authoring a report using it. Alcuni esempi:Examples include:

  • Definizione di relazioni tra tabelleDefining relationships between tables
  • Aggiunta di nuovi calcoli (colonne calcolate e misure)Adding new calculations (calculated columns and measures)
  • Ridenominazione e disattivazione della visualizzazione di colonne e misureRenaming and hiding columns and measures
  • Definizione di gerarchieDefining hierarchies
  • Definizione della formattazione, dell'esecuzione del riepilogo predefinita e dell'ordinamento di una colonnaDefining the formatting, default summarization and sort order for a column
  • Raggruppamento o clustering dei valoriGrouping or clustering values

Quando si usa DirectQuery è comunque possibile apportare molti di questi miglioramenti ai modelli e vale sempre il principio di arricchire i dati non elaborati per migliorare l'uso in un momento successivo.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. Tuttavia, quando si usa DirectQuery alcune funzionalità di modellazione non sono disponibili o sono limitate.However, there are some modeling capabilities that aren't available, or are limited, when using DirectQuery. Le limitazioni vengono in genere applicate per evitare problemi di prestazioni.The limitations are generally applied to avoid performance issues. Le limitazioni comuni a tutte le origini DirectQuery sono elencate di seguito.The set of limitations that are common to all DirectQuery sources are listed here. Per alcune origini potrebbero valere ulteriori limitazioni, come descritto in Passaggi successivi.Additional limitations might apply to individual sources, as described in Next steps.

  • Nessuna gerarchia di data predefinita: quando si importano dati, per impostazione predefinita ogni colonna date/datetime ha anche una gerarchia di data predefinita.No built-in date hierarchy: When importing data, every date/datetime column will also have a built-in date hierarchy available by default. Se ad esempio si importa una tabella di ordini di vendita che include una colonna OrderDate, quando si usa OrderDate in un oggetto visivo è possibile scegliere il livello appropriato (anno, mese, giorno) da usare.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. Questa gerarchia di data predefinita non è disponibile quando si usa DirectQuery.This built-in date hierarchy isn't available when using DirectQuery. Se nell'origine sottostante è disponibile una tabella Date, come avviene spesso in molti data warehouse, è possibile usare le funzioni DAX di Business Intelligence per le gerarchie temporali come di consueto.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.
  • Supporto di data/ora solo con precisione al secondo: quando si usano le colonne temporali nel set di dati, Power BI invia le query all'origine sottostante a un livello di dettaglio di secondi.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. Le query non vengono inviate all'origine DirectQuery per millisecondi.Queries aren't sent to the DirectQuery source for milliseconds. Rimuovere questa parte temporale dalle colonne di origine.Remove this part of the times from your source columns.
  • Limitazioni nelle colonne calcolate: le colonne calcolate possono essere solo intrariga, ovvero possono fare riferimento solo ai valori delle altre colonne della stessa tabella, senza usare funzioni di aggregazione.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. Inoltre, le funzioni scalari DAX, come LEFT(), che sono consentite sono limitate a quelle di cui è possibile eseguire il push nell'origine sottostante.Additionally, the DAX scalar functions, such as LEFT(), that are allowed, are limited to those functions that can be pushed to the underlying source. Le funzioni variano a seconda delle funzionalità esatte dell'origine.The functions vary depending upon the exact capabilities of the source. Le funzioni non supportate non vengono elencate nel completamento automatico quando si crea la funzione DAX per una colonna calcolata e generano un errore se usate.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.
  • Nessun supporto per le funzioni DAX padre-figlio: nella modalità DirectQuery non è possibile usare la famiglia di funzioni DAX PATH() che in genere gestiscono strutture padre-figlio, ad esempio piani dei conti o gerarchie dei dipendenti.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.
  • Tabelle calcolate non supportate: la possibilità di definire una tabella calcolata usando un'espressione DAX non è supportata nella modalità DirectQuery.Calculated tables aren't supported: The ability to define a calculated table using a DAX expression isn't supported in DirectQuery mode.
  • Filtro delle relazioni: per informazioni sul filtro bidirezionale, vedere Filtro incrociato bidirezionale.Relationship filtering: For information about bi-directional filtering, see Bidirectional cross-filtering. Questo white paper presenta esempi nel contesto di SQL Server Analysis Services.This whitepaper presents examples in the context of SQL Server Analysis Services. I punti fondamentali si applicano ugualmente a Power BI.The fundamental points apply equally to Power BI.
  • Nessun clustering: con DirectQuery non è possibile usare la funzionalità di clustering per trovare automaticamente i gruppi.No Clustering: When using DirectQuery, it's not possible to use the Clustering capability, to automatically find groups.

Limitazioni della creazione di reportReporting limitations

Quasi tutte le funzionalità di creazione di report sono supportate per i modelli DirectQuery.Almost all reporting capabilities are supported for DirectQuery models. È quindi possibile usare lo stesso set di visualizzazioni finché l'origine sottostante offre un livello di prestazioni adeguato.As such, so long as the underlying source offers a suitable level of performance, the same set of visualizations can be used. Esistono importanti limitazioni in alcune delle altre funzionalità disponibili nel servizio Power BI dopo la pubblicazione di un report:There are some important limitations in some of the other capabilities offered in the Power BI service after a report is published:

  • Informazioni rapide non è supportato: Informazioni rapide di Power BI esegue ricerche in diversi subset del set di dati applicando una serie di algoritmi complessi per individuare informazioni potenzialmente interessanti.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. Data la necessità di query con prestazioni molto elevate, questa funzionalità non è disponibile nei set di dati con DirectQuery.Given the need for very high performance queries, this capability isn't available on datasets using DirectQuery.
  • Domande e risposte non è supportato: Domande e risposte di Power BI consente di esplorare i dati tramite funzionalità intuitive basate sul linguaggio naturale e di ricevere le risposte sotto forma di grafici.Q&A isn't supported: Power BI Q&A enables you to explore your data using intuitive, natural language capabilities and receive answers in the form of charts and graphs. Non è tuttavia attualmente supportato nei set di dati con DirectQuery.However, it's currently not supported on datasets using DirectQuery.
  • L'uso di Esplora in Excel determinerà probabilmente un calo di prestazioni: è possibile esplorare i dati usando la funzionalità Esplora in Excel in un set di dati.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. Questo approccio consente di creare tabelle e grafici pivot in Excel.This approach allows Pivot Tables and Pivot Charts to be created in Excel. Anche se questa funzionalità è supportata nei set di dati con DirectQuery, le prestazioni sono in genere più lente rispetto alla creazione di oggetti visivi in Power BI ed è necessario tener conto di questo aspetto nella decisione di usare DirectQuery se l'uso di Excel è importante per i propri scenari.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.
  • Lunghezza massima per le colonne di testo: la lunghezza massima dei dati in una colonna di testo per i set di dati con DirectQuery è 32.764 caratteri.Maximum length for text columns: The maximum length of the data in a text column for datasets using DirectQuery is 32,764 characters. La creazione di report con testi più lunghi di tale limite causerà un errore.Reporting on longer texts than that will result in an error.

SicurezzaSecurity

Come illustrato in precedenza in questo articolo, un report di DirectQuery usa sempre le stesse credenziali fisse per la connessione all'origine dati sottostante, dopo la pubblicazione nel servizio 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. Questo comportamento si applica a DirectQuery, non alle connessioni dinamiche a SQL Server Analysis Services, che sono diverse sotto questo aspetto.This behavior applies to DirectQuery, not to live connections to SQL Server Analysis Services, which is different in this respect. Subito dopo la pubblicazione di un report di DirectQuery è necessario configurare le credenziali dell'utente che verranno usate.Immediately after publish of a DirectQuery report, it's necessary to configure the credentials of the user that will be used. Finché non si configurano le credenziali, l'apertura del report nel servizio Power BI genererà un errore.Until you configure the credentials, opening the report on the Power BI service would result in an error.

Dopo aver specificato le credenziali dell'utente, queste verranno usate indipendentemente dall'utente che apre il report.Once the user credentials are provided, then those credentials will be used whichever user who opens the report. Sotto questo aspetto non c'è differenza rispetto ai dati importati.In this way, it's exactly like imported data. Ogni utente vede gli stessi dati, a meno che nell'ambito del report non sia stata definita la sicurezza a livello di riga.Every user sees the same data, unless row-level security has been defined as part of the report. È necessario prestare la stessa attenzione alla condivisione del report, se sono presenti regole di sicurezza definite nell'origine sottostante.The same attention must be paid to sharing the report, if there are any security rules defined in the underlying source.

Inoltre, le 'credenziali alternative' non sono supportate quando si effettuano connessioni DirectQuery a SQL Server da Power BI Desktop.Additionally, 'alternate credentials' aren't supported when making DirectQuery connections to SQL Server from Power BI Desktop. È possibile usare le credenziali di Windows o le credenziali di database correnti.You can use your current Windows credentials or database credentials.

Comportamento nel servizio Power BIBehavior in the Power BI service

Questa sezione descrive il comportamento di un report di DirectQuery nel servizio Power BI, per spiegare l'entità del carico applicato all'origine dati back-end dato il numero di utenti con i quali verranno condivisi il report e il dashboard, la complessità del report e a seconda che sia stata definita la sicurezza a livello di riga nel report.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.

Report: apertura, interazione, modificaReports – opening, interacting with, editing

Quando si apre un report, tutti gli oggetti visivi presenti nella pagina visualizzata vengono aggiornati.When a report is opened, all the visuals on the currently visible page refresh. Ciascun oggetto visivo richiede in genere almeno una query sull'origine dati sottostante.Each visual generally requires at least one query to the underlying data source. Alcuni oggetti visivi potrebbero richiedere più query.Some visuals might require more than one query. Ad esempio, un oggetto visivo potrebbe visualizzare valori aggregati di due tabelle dei fatti diverse oppure contenere una misura più complessa o totali di una misura non additiva come Count Distinct.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. Se ci si sposta su una nuova pagina, questi oggetti visivi vengono aggiornati.Moving to a new page refreshes those visuals. L'aggiornamento invia un nuovo set di query all'origine sottostante.Refreshing sends a new set of queries to the underlying source.

Ogni interazione dell'utente con il report può comportare l'aggiornamento degli oggetti visivi.Every user interaction on the report might result in visuals being refreshed. La selezione di un valore diverso in un filtro dei dati richiede ad esempio l'invio di un nuovo set di query per aggiornare tutti gli oggetti visivi interessati.For example, selecting a different value on a slicer requires sending a new set of queries to refresh all of the affected visuals. Lo stesso vale quando si fa clic su un oggetto visivo per l'evidenziazione incrociata di altri oggetti visivi oppure quando si modifica il filtro.The same is true for clicking on a visual to cross-highlight other visuals, or changing a filter.

In modo analogo, la modifica di un nuovo report richiede l'invio di query per ogni passaggio necessario per produrre l'oggetto visivo finale.Similarly, editing a new report requires queries to be sent for each step on the path to produce the final visual.

I risultati vengono memorizzati nella cache,There's some caching of results. in modo che l'aggiornamento di un oggetto visivo sia istantaneo se di recente sono stati ottenuti gli stessi identici risultati.The refresh of a visual is instantaneous if the exact same results have recently been obtained. Se non è stata definita la sicurezza a livello di riga, queste cache non vengono condivise tra gli utenti.If row-level security is defined, such caches aren't shared across users.

Aggiornamento del dashboardDashboard Refresh

È possibile aggiungere singoli oggetti visivi o intere pagine come riquadri del dashboard.Individual visuals, or entire pages, can be pinned to dashboard as tiles. I riquadri basati su set di dati di DirectQuery vengono aggiornati automaticamente in base a una pianificazione.Tiles based on DirectQuery datasets refresh automatically according to a schedule. I riquadri inviano query all'origine dati back-end.Tiles send queries to the back-end data source. Per impostazione predefinita, i set di dati vengono aggiornati ogni ora, ma è possibile definire un intervallo di aggiornamento compreso tra una volta alla settimana e ogni 15 minuti nelle impostazioni del set di dati.By default, datasets refresh every hour, but can be configured as part of dataset settings to be between weekly and every 15 minutes.

Se non è stata definita la sicurezza a livello di riga nel modello, ogni riquadro viene aggiornato una sola volta e i risultati vengono condivisi tra tutti gli utenti.If no row-level security is defined in the model, each tile is refreshed once, and the results shared across all users. In caso contrario, l'effetto moltiplicatore può essere notevole.Otherwise, there can be a large multiplier effect. Ogni riquadro richiede l'invio di query separate per ogni utente all'origine sottostante.Each tile requires separate queries per user to be sent to the underlying source.

Un dashboard con 10 riquadri condivisi con 100 utenti e creato su un set di dati con DirectQuery, dotato di sicurezza a livello di riga e configurato per l'aggiornamento ogni 15 minuti, comporterà l'invio di almeno 1000 query ogni 15 minuti all'origine 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.

È quindi necessario valutare attentamente l'uso della sicurezza a livello di riga e la configurazione della frequenza di aggiornamento.Pay careful consideration to the use of row-level security, and the configuring of the refresh schedule.

TimeoutTime-outs

Alle singole query nel servizio Power BI viene applicato un timeout di quattro minuti.A time-out of four minutes is applied to individual queries in the Power BI service. Le query che superano questo tempo hanno esito negativo.Queries taking longer than that will fail. Come sottolineato in precedenza, è consigliabile usare DirectQuery per le origini che forniscono prestazioni di query quasi interattive.As stressed earlier, we recommend that you use DirectQuery for sources that provide near interactive query performance. Questo limite ha lo scopo di prevenire i problemi dati da tempi di esecuzione eccessivamente lunghi.This limit is intended to prevent issues from overly long execution times.

Altre implicazioniOther implications

Alcune altre implicazioni generali dell'uso di DirectQuery sono descritte di seguito:Some other general implications of using DirectQuery are as follows:

  • Se i dati cambiano, è necessario aggiornare per assicurarsi che vengano visualizzati i dati più recenti: dato l'uso di cache, non c'è garanzia che l'oggetto visivo visualizzi sempre i dati più recenti.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. Un oggetto visivo può ad esempio visualizzare le transazioni dell'ultimo giorno.For example, a visual might show the transactions in the last day. A causa della modifica di un filtro dei dati, potrebbe venire aggiornato per visualizzare le transazioni degli ultimi due giorni.Because of a slicer being changed, it might refresh to show the transactions for the last two days. Le transazioni potrebbero includere le transazioni recenti e appena arrivate.The transactions could include recent, newly arrived transactions. Reimpostando il filtro dei dati sul valore originale, l'oggetto visualizzerà di nuovo il valore ottenuto in precedenza e memorizzato nella cache.Returning the slicer to its original value would result in it again showing the cached value previously obtained.

    Selezionando Aggiorna, le cache vengono cancellate e tutti gli oggetti visivi presenti nella pagina vengono aggiornati per visualizzare i dati più recenti.Selecting Refresh clears any caches and refreshes all the visuals on the page to show the latest data.

  • Se i dati cambiano, non c'è garanzia di coerenza tra gli oggetti visivi: oggetti visivi diversi, indipendentemente dal fatto che si trovino nella stessa pagina o in pagine diverse, potrebbero essere aggiornati in momenti diversi.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 i dati nell'origine sottostante cambiano, non è certo che ogni oggetto visivo visualizzi i dati dello stesso identico momento.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. Dato che in alcuni casi sono necessarie più query per un singolo oggetto visivo, ad esempio per ottenere i dettagli e i totali, la coerenza non è in realtà garantita neanche all'interno di un singolo oggetto visivo.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. Per garantire la coerenza sarebbe necessario aggiornare tutti gli oggetti visivi quando ne viene aggiornato uno qualsiasi, oltre all'uso di costose funzioni quali l'isolamento snapshot nell'origine dati sottostante.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.

    Questo problema può essere in gran parte risolto selezionando di nuovo Aggiorna per aggiornare tutti gli oggetti visivi presenti nella pagina.This issue can be mitigated to a large extent by again selecting Refresh to refresh all of the visuals on the page. Anche la modalità di importazione comporta un problema di coerenza simile quando si importano dati da più tabelle.Even if using import mode, there's a similar problem of guaranteeing consistency while importing data from more than one table.

  • L'aggiornamento in Power BI Desktop è necessario in modo da riflettere le modifiche dei metadati: dopo la pubblicazione di un report, selezionando Aggiorna vengono aggiornati gli oggetti visivi nel report.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 lo schema dell'origine sottostante è stato modificato, tali modifiche non vengono applicate automaticamente per modificare i campi disponibili nell'elenco dei campi.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 sono state rimosse tabelle o colonne dall'origine sottostante, la query potrebbe restituire un errore durante l'aggiornamento.If tables or columns have been removed from the underlying source, it might result in query failure upon refresh. Per aggiornare i campi nel modello e applicare le modifiche, è necessario aprire il report in Power BI Desktop e scegliere Aggiorna.Opening the report in Power BI Desktop, and choosing Refresh updates the fields in the model to reflect the changes.

  • Limite di un milione di righe restituite in una query: è previsto un limite predefinito di un milione per il numero di righe che possono essere restituite in una singola query sull'origine sottostante.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. Questo limite non ha generalmente implicazioni pratiche e gli oggetti visivi in sé non visualizzano così tanti punti.This limit generally has no practical implications, and visuals themselves aren't going to display that many points. Il limite può essere tuttavia violato nei casi in cui Power BI non ottimizzi completamente le query inviate e alcuni risultati intermedi richiesti superino il 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. Il superamento del limite può anche verificarsi durante la creazione di un oggetto visivo, prima di ottenere uno stato finale più ragionevole.It can also occur while building a visual, on the path to a more reasonable final state. L'inclusione di Customer e TotalSalesQuantity violerebbe ad esempio questo limite se fossero presenti più di 1 milione di clienti, finché non viene applicato un filtro.For example, including Customer and TotalSalesQuantity would hit this limit if there were more than 1 million customers, until some filter were applied.

    Verrebbe restituito questo errore: "Il set di risultati di una query sull'origine dati esterna ha superato le dimensioni massime consentite di '1000000' righe".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."

  • Non è possibile passare dalla modalità di importazione alla modalità DirectQuery: è in genere possibile passare dalla modalità DirectQuery alla modalità di importazione per un modello, ma tutti i dati necessari devono essere importati.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. Non è invece possibile tornare alla modalità precedente, principalmente a causa del set di funzionalità non supportate nella modalità DirectQuery.It's also not possible to switch back, primarily because of the set of features not supported in DirectQuery mode. Non è possibile passare dalla modalità DirectQuery alla modalità di importazione nemmeno per i modelli DirectQuery su origini multidimensionali come SAP BW, a causa del diverso trattamento delle misure esterne.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 nel servizio Power BIDirectQuery in the Power BI service

Tutte le origini sono supportate da Power BI Desktop.All sources are supported from Power BI Desktop. Alcune origini sono anche disponibili direttamente all'interno del servizio Power BI.Some sources are also available directly from within the Power BI service. Un utente aziendale può ad esempio usare Power BI per connettersi ai propri dati in Salesforce e ottenere immediatamente un dashboard senza usare 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.

Nel servizio sono direttamente disponibili solo due delle origini supportate da DirectQuery:Only two of the DirectQuery enabled-sources are available directly in the service:

  • SparkSpark
  • Azure SQL Data WarehouseAzure SQL Data Warehouse

È tuttavia consigliabile iniziare a usare DirectQuery con queste due origini dall'interno di Power BI Desktop,However, we recommend that any use of DirectQuery over those two sources start within Power BI Desktop. perché quando viene inizialmente stabilita la connessione nel servizio Power BI vengono applicate molte limitazioni chiave.The reason is that when the connection is initially made in the Power BI service, many key limitations will apply. Anche se il punto di partenza è semplice (l'avvio nel servizio Power BI), l'ulteriore miglioramento del report ottenuto è soggetto a limitazioni.While the start point was easy, starting in the Power BI service, there are limitations on enhancing the resulting report any further. Non è ad esempio possibile creare calcoli o usare molte funzioni di analisi o persino aggiornare i metadati per applicare le modifiche apportate allo schema sottostante.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.

Indicazioni per un uso ottimale di DirectQueryGuidance for using DirectQuery successfully

Se si intende usare DirectQuery, questa sezione offre alcune indicazioni generali su come ottenere risultati ottimali.If you're going to use DirectQuery, this section provides you with some high-level guidance on how to ensure success. Le indicazioni fornite in questa sezione derivano dalle implicazioni dell'uso di DirectQuery descritte in questo articolo.The guidance in this section is derived from the implications of using DirectQuery that have been described in this article.

Prestazioni dell'origine dati back-endBack-end data source performance

Verificare che gli oggetti visivi semplici vengano aggiornati in un tempo ragionevole,Validate that simple visuals refresh in a reasonable time. ovvero entro 5 secondi per un'esperienza interattiva soddisfacente.A refresh time should be within 5 seconds to have a reasonable interactive experience. Se l'aggiornamento degli oggetti visivi impiega più di 30 secondi, è molto probabile che dopo la pubblicazione del report si verifichino altri problemi,If visuals are taking longer than 30 seconds, it's highly likely that further issues will occur following publication of the report. che possono rendere la soluzione impraticabile.These issues can make the solution unworkable.

Se le query sono lente, esaminare le query inviate all'origine sottostante e il motivo delle loro prestazioni.If queries are slow, examine the queries being sent to the underlying source, and the reason for the query performance. Questo articolo non tratta l'ampia gamma di procedure consigliate per l'ottimizzazione dei database nel set completo delle possibili origini sottostanti,This article doesn't cover the wide range of database optimization best practices across the full set of potential underlying sources. ma è applicabile alle procedure standard per i database valide per la maggior parte delle situazioni:This article does cover the standard database practices that apply to most situations:

  • Le relazioni basate su colonne di tipo Integer hanno in genere prestazioni migliori rispetto ai join su colonne di altri tipi di dati.Relationships based on integer columns generally perform better than joins on columns of other data types.
  • È necessario creare gli indici appropriati.The appropriate indexes should be created. Ciò implica generalmente l'uso di indici dell'archivio colonne nelle origini che li supportano, ad esempio SQL Server.Index creation generally means the use of column store indexes in those sources that support them, for example, SQL Server.
  • Devono essere aggiornate tutte le statistiche necessarie nell'origine.Any necessary statistics in the source should be updated.

Indicazioni per la progettazione del modelloModel Design Guidance

Quando si definisce il modello è consigliabile seguire queste indicazioni:When defining the model, consider following this guidance:

  • Evitare query complesse nell'editor di query.Avoid complex queries in Query Editor. L'editor di query converte una query complessa in una singola query SQL.Query Editor translates a complex query into a single SQL query. La singola query viene visualizzata nella selezione secondaria di ogni query inviata alla tabella.The single query appears in the subselect of every query sent to that table. Se la query è complessa potrebbero verificarsi problemi di prestazioni per ogni query inviata.If that query is complex, it might result in performance issues on every query sent. La query SQL effettiva per un set di passaggi può essere ottenuta selezionando l'ultimo passaggio nell'editor di query e scegliendo Visualizza query nativa dal menu di scelta rapida.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.

  • Mantenere le misure semplici.Keep measures simple. Almeno inizialmente, è consigliabile limitare le misure ad aggregazioni semplici.At least initially, we recommend limiting measures to simple aggregates. Se le misure offrono prestazioni soddisfacenti, è possibile definire misure più complesse, ma prestando attenzione alle prestazioni di ognuna.Then if the measures operate in a satisfactory manner, more complex measures can be defined, but paying attention to the performance for each.

  • Evitare relazioni sulle colonne calcolate.Avoid relationships on calculated columns. Questa indicazione è valida per i database in cui è necessario eseguire join multicolonna.This guidance is relevant to databases where you need to do multi-column joins. Power BI non consente attualmente relazioni basate su più colonne come chiavi di riferimento/chiavi primarie.Power BI today doesn't allow a relationship to be based on multiple columns as the FK/PK. La soluzione comune consiste nel concatenare le colonne usando una colonna calcolata e basare il join su tale colonna.The common workaround is to concatenate the columns together using a calculated column, and base the join on that column. Questa soluzione alternativa è ragionevole per i dati importati, ma per DirectQuery produce un join in un'espressione.While this workaround is reasonable for imported data, for DirectQuery, it results in a join on an expression. Questo risultato impedisce generalmente l'uso degli indici e comporta una riduzione delle prestazioni.That result commonly prevents use of any indexes, and leads to poor performance. L'unica soluzione alternativa è materializzare effettivamente più colonne in una singola colonna nel database sottostante.The only workaround is to actually materialize the multiple columns into a single column in the underlying database.

  • Evitare relazioni sulle colonne uniqueidentifier.Avoid relationships on uniqueidentifier columns. Power BI non supporta dati di tipo uniqueidentifier in modo nativo.Power BI doesn't natively support a datatype of uniqueidentifier. La definizione di una relazione tra colonne di tipo uniqueidentifier produce una query con un join che prevede un cast.Defining a relationship between columns of type uniqueidentifier column results in a query with a join involving a cast. Anche questo approccio provoca generalmente una riduzione delle prestazioni.Again, this approach commonly leads to poor performance. Fino a quando questo caso d'uso non viene espressamente ottimizzato, l'unica soluzione consiste nel materializzare colonne di un tipo alternativo nel database sottostante.Until this case is specifically optimized, the only workaround is to materialize columns of an alternative type in the underlying database.

  • Nascondere la colonna "to" nelle relazioni.Hide the to column on relationships. La colonna to nelle relazioni è in genere la chiave primaria della tabella to.The to column on relationships is commonly the primary key on the to table. Questa colonna deve essere nascosta.That column should be hidden. Se è nascosta, non compare nell'elenco dei campi e non può essere usata negli oggetti visivi.If hidden, it doesn't appear in the field list and can't be used in visuals. Le colonne su cui si basano le relazioni sono di fatto spesso colonne di sistema, ad esempio chiavi sostitutive in un data warehouse,Often the columns on which relationships are based are in fact system columns, for example, surrogate keys in a data warehouse. ed è comunque consigliabile nascondere tali colonne.It's good practice to hide such columns anyway. Se la colonna è significativa, introdurre una colonna calcolata visibile e avente un'espressione semplice equivalente alla chiave primaria, come nell'esempio seguente: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
        ...
    
  • Esaminare tutti gli usi delle colonne calcolate e le modifiche ai tipi di dati.Examine all uses of calculated columns and data type changes. L'uso di queste funzionalità non è necessariamente dannoso.Use of these capabilities aren't necessarily harmful. Implica che le query inviate all'origine sottostante contengano espressioni anziché semplici riferimenti a colonne.They do result in the queries sent to the underlying source containing expressions rather than simple references to columns. Ciò può anche in questo caso impedire l'uso degli indici.That again might result in indexes not being used.

  • Evitare l'uso di filtri incrociati bidirezionali per le relazioni.Avoid use of the bi-directional cross filtering on relationships. L'uso di filtri incrociati bidirezionali può determinare istruzioni di query che non offrono prestazioni ottimali.Use of bi-directional cross filtering can lead to query statements that don't perform well.

  • Provare l'impostazione Considera integrità referenziale.Experiment with setting Assume referential integrity. L'impostazione Considera integrità referenziale nelle relazioni consente alle query di usare istruzioni INNER JOIN invece di OUTER JOIN.The Assume Referential Integrity setting on relationships enables queries to use INNER JOIN statements rather than OUTER JOIN. Le prestazioni delle query generalmente migliorano seguendo queste indicazioni, anche se ciò dipende dalle specifiche dell'origine dati.This guidance generally improves query performance, though it does depend on the specifics of the data source.

  • Non usare filtri data relativi nell'editor di query.Don't use the relative data filtering in Query Editor. È possibile definire filtri data relativi nell'editor di query,It's possible to define relative date filtering in Query Editor. ad esempio per filtrare le righe in cui la data è negli ultimi 14 giorni.For example, to filter to the rows where the date is in the last 14 days.

    Filtro delle righe per gli ultimi 14 giorni

    Questo filtro viene tuttavia convertito in un filtro basato sulla data fissa, come al momento in cui è stata creata la query.However, this filter is translated into a filter based on the fixed date, as at the time the query was authored. Questo risultato può essere visto esaminando la query nativa.This result can be seen from viewing the native query.

    Filtro delle righe nella query SQL nativa

    Questo risultato non è probabilmente quello desiderato.This result is probably not what you wanted. Per assicurarsi che il filtro venga applicato in base alla data in cui viene eseguito il report, applicare invece il filtro nel report come filtro report.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. Questa operazione viene attualmente eseguita creando una colonna calcolata per il calcolo del numero di giorni trascorsi, tramite la funzione DAX DATE(), e quindi usando tale colonna calcolata in un 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.

Indicazioni per la progettazione del reportReport Design Guidance

Quando si crea un report tramite una connessione DirectQuery, seguire queste indicazioni:When creating a report using a DirectQuery connection, follow this guidance:

  • Provare a usare le opzioni di Riduzione query: Power BI include opzioni nel report per inviare un minor numero di query e per disabilitare alcune interazioni che comporterebbero un'esperienza insoddisfacente se le query risultanti richiedessero tempi di esecuzione lunghi.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. Per accedere a queste opzioni in Power BI Desktop, passare a File > Opzioni e impostazioni > Opzioni e selezionare Riduzione query.To access these options in Power BI Desktop, go to File > Options and settings > Options and select Query reduction.

    Opzioni di Riduzione query

    La selezione delle opzioni in Riduzione query consente di disabilitare l'evidenziazione incrociata nell'intero report.Checking box selections on the Query reduction let you disable cross-highlighting throughout your entire report. È anche possibile mostrare un pulsante Applica per filtri dei dati o selezioni di filtri.You can also show an Apply button to slicers or filter selections. Questo approccio consente di effettuare diverse selezioni di filtri e filtri dei dati prima di applicarle.This approach lets you then make many slicer and filter selections before applying them. Non viene inviata alcuna query finché non si seleziona il pulsante Applica sul filtro dei dati.No queries are sent until you select the Apply button on the slicer. Le selezioni possono quindi essere usate per filtrare i dati.Your selections can then be used to filter the data.

    Queste opzioni si applicano al report mentre si interagisce con esso in Power BI Desktop,These options apply to your report while you interact with it in Power BI Desktop. oltre che quando gli utenti utilizzano il report nel servizio Power BI.These options also apply when your users consume the report in the Power BI service.

  • Applicare prima i filtri: applicare sempre eventuali filtri all'inizio della creazione di un oggetto visivo.Apply filters first: Always apply any applicable filters at the start of building a visual. Ad esempio, invece di trascinare TotalSalesAmount e ProductName e quindi filtrare in base a un anno specifico, applicare il filtro su anno fin dall'inizio.For example, rather than drag in TotalSalesAmount and ProductName, then filter to a particular year, apply the filter on Year at the very start. Ogni passaggio della creazione di un oggetto visivo invia una query.Each step of building a visual sends a query. Anche se è possibile apportare un'altra modifica prima del completamento della prima query, questo approccio lascia comunque un carico superfluo sull'origine sottostante.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. Applicando subito i filtri, le query intermedie diventano generalmente meno impegnative.By applying filters early, it generally makes those intermediate queries less costly. Inoltre, se non si applicano subito i filtri è possibile che venga raggiunto il limite di 1 milione di righe.Also, failing to apply filters early can result in hitting the 1 million row limit.

  • Limitare il numero di oggetti visivi in una pagina: quando si apre una pagina o si modifica un filtro dei dati o un filtro a livello di pagina, tutti gli oggetti visivi presenti in una pagina vengono aggiornati.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. È anche previsto un limite al numero di query inviate in parallelo.There's also a limit on the number of queries that are sent in parallel. Con l'aumentare del numero di oggetti visivi, alcuni di essi verranno aggiornati in modo seriale, con il conseguente incremento del tempo necessario per aggiornare l'intera pagina.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. Per questo motivo, è consigliabile limitare il numero di oggetti visivi presenti in una singola pagina e optare per più pagine semplici.For this reason, we recommend that you limit the number of visuals on a single page, and instead have more, simpler pages.

  • Considerare la disattivazione dell'interazione tra oggetti visivi: Per impostazione predefinita, le visualizzazioni in una pagina di report possono essere usate per applicare un filtro incrociato e un'evidenziazione incrociata nelle altre visualizzazioni nella pagina.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. Selezionando ad esempio 1999 nel grafico a torta, all'istogramma verrà applicata l'evidenziazione incrociata per visualizzare le vendite per categoria per l'anno 1999.For example, having selected 1999 on the pie chart, the column chart is cross highlighted to show the sales by category for 1999.

    Più oggetti visivi con filtro incrociato ed evidenziazione incrociata

    Il filtro incrociato e l'evidenziazione incrociata in DirectQuery richiedono l'invio di query all'origine sottostante.Cross-filtering and cross-highlighting in DirectQuery require queries to be submitted to the underlying source. Se il tempo necessario per rispondere alle selezioni degli utenti diventa eccessivamente lungo,The interaction should be switched off if the time taken to respond to users' selections would be unreasonably long. è possibile disattivare questa interazione.You can switch off this interaction. È possibile farlo per l'intero report, come descritto in precedenza per le opzioni di Riduzione query, o caso per caso.Switch off the interaction for either the entire report, as described earlier for query reduction options, or on a case-by-case basis. Per altre informazioni, vedere Filtro incrociato per gli oggetti visivi in un report di Power BI.For more information, see How visuals cross-filter each other in a Power BI report.

Oltre ai suggerimenti precedenti, ognuna delle funzionalità di creazione di report seguenti può causare problemi di prestazioni:In addition to the previous suggestions, each of the following reporting capabilities can cause performance issues:

  • Filtri di misure: gli oggetti visivi che contengono misure, o aggregazioni di colonne, possono contenere filtri in tali misure.Measure filters: Visuals containing measures, or aggregates of columns, can contain filters in those measures. L'immagine grafica seguente visualizza ad esempio il valore di SalesAmount per categoria, ma includendo solo le categorie con oltre 20 milioni di vendite.For example, the following graphic shows SalesAmount by Category, but only including those categories with more than 20M of sales.

    Oggetto visivo con misure che contengono filtri

    Questo approccio comporta l'invio di due query all'origine sottostante:This approach results in two queries being sent to the underlying source:

    • La prima query recupera le categorie che soddisfano la condizione SalesAmount maggiore di 20 milioni.The first query retrieves the Categories meeting the condition, SalesAmount greater than 20 million.
    • La seconda query recupera quindi i dati necessari per l'oggetto visivo, incluse le categorie che soddisfano la condizione presente nella clausola WHERE.The second query then retrieves the necessary data for the visual, including the categories that met the condition in the WHERE clause.

    Questo approccio in genere funziona bene in presenza di centinaia o migliaia di categorie, come in questo esempio.This approach generally works well if there are hundreds or thousands of categories, as in this example. Se il numero di categorie è molto più elevato, le prestazioni possono peggiorare.Performance can degrade if the number of categories is much larger. La query non riesce se più di un milione di categorie soddisfano la condizione.The query fails for more than a million categories meeting the condition. Il limite di un milione di righe è stato descritto in precedenza.The 1 million row limit was discussed earlier.

  • Filtri PrimiN: è possibile definire filtri avanzati in modo da filtrare solo i primi o ultimi N valori classificati in base a una determinata misura.TopN filters: Advanced filters can be defined to filter on only the top or bottom N values ranked by some measure. Ad esempio, i filtri possono includere le prime 10 categorie nell'oggetto visivo precedente.For example, filters can include the top 10 categories in the previous visual. Anche questo approccio comporta l'invio di due query all'origine sottostante:This approach again results in two queries being sent to the underlying source. La prima query restituirà tuttavia tutte le categorie dell'origine sottostante; le prime N verranno determinate in base ai risultati restituiti.However, the first query will return all categories from the underlying source, and then the TopN are determined based on the returned results. A seconda della cardinalità della colonna interessata, questo approccio può causare problemi di prestazioni oppure l'esito negativo delle query a causa del limite di 1 milione di righe.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.

  • Mediana: per le aggregazioni, come Sum o Count Distinct, viene in genere eseguito il push nell'origine sottostante.Median: Generally, any aggregation, such as Sum or Count Distinct, is pushed to the underlying source. Questo non vale tuttavia per la mediana, perché questa aggregazione non è in genere supportata dall'origine sottostante.However, this fact isn't true for median, which this aggregate is generally not supported by the underlying source. In questi casi, i dati di dettaglio vengono recuperati dall'origine sottostante e la mediana viene calcolata dai risultati restituiti.In such cases, the detail data is retrieved from the underlying source, and the median calculated from the returned results. Questo approccio è appropriato quando la mediana deve essere calcolata su un numero relativamente ridotto di risultati,This approach is reasonable when the median is to be calculated over a relatively small number of results. mentre si verificheranno problemi di prestazioni o errori di query a causa del limite di 1 milione di righe, se la cardinalità è di grandi dimensioni.Performance issues or query failures because of the 1 million row limit occur if the cardinality is large. La mediana della popolazione nazionale potrebbe essere ad esempio un'operazione ragionevole, mentre la mediana del prezzo di vendita potrebbe non esserlo.For example, Median Country Population might be reasonable, but Median Sales Price might not be.

  • Filtri per testo avanzati (contiene e così via): quando si filtra una colonna di testo, il filtro avanzato consente parametri come contiene inizia con e così via.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. Questi filtri possono certamente comportare prestazioni ridotte per alcune origini dati.These filters can certainly result in degraded performance for some data sources. In particolare, il filtro contiene predefinito non deve essere usato se si vuole ottenere una corrispondenza esatta.In particular, the default contains filter shouldn't be used if what is required is an exact match. Anche se i risultati possono essere gli stessi, a seconda dei dati effettivi, le prestazioni potrebbero differire notevolmente a causa dell'uso degli indici.Although the results might be the same, depending on the actual data, the performance might be drastically different because of indexes.

  • Filtri dei dati di selezione multipla: per impostazione predefinita, i filtri dei dati consentono una sola selezione.Multi select slicers: By default, slicers only allow a single selection to be made. Consentire la selezione multipla nei filtri può causare problemi di prestazioni, in quanto l'utente seleziona un set di elementi nel filtro dei dati.Allowing multi-selection in filters can cause some performance issues, because the user selects a set of items in the slicer. Ad esempio, se l'utente seleziona i 10 prodotti di interesse, ogni nuova selezione comporta l'invio di query all'origine.For example, if the user selects the 10 products of interest, each new selection results in queries being sent to the source. Anche se l'utente può selezionare l'elemento successivo prima che la query venga completata, questo approccio comporta in ogni caso un carico aggiuntivo sull'origine sottostante.Although the user can select the next item before the query completes, this approach results in extra load on the underlying source.

  • Considerare la disattivazione dei totali negli oggetti visivi: per impostazione predefinita, le tabelle e le matrici visualizzano totali e subtotali.Consider switching off totals on visuals: By default, tables and matrices display totals and subtotals. In molti casi, è necessario inviare query separate all'origine sottostante per ottenere i valori per tali totali.In many cases, separate queries must be sent to the underlying source to obtain the values for such totals. Questo vale ogni volta che si usa l'aggregazione DistinctCount o in tutti i casi in cui si usa DirectQuery su SAP BW o SAP HANA.This fact applies whenever using DistinctCount aggregation, or in all cases when using DirectQuery over SAP BW or SAP HANA. È consigliabile disattivare questi totali tramite il riquadro Formato.Such totals should be switched off by using the Format pane.

Opzione relativa al numero massimo di connessioni per DirectQueryMaximum number of connections option for DirectQuery

È possibile impostare il numero massimo di connessioni che DirectQuery può aprire per ogni origine dati sottostante e controllare così il numero di query inviate simultaneamente a ogni origine dati.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.

Il numero massimo predefinito di connessioni simultanee che DirectQuery può aprire è 10.DirectQuery opens a default maximum number of 10 concurrent connections. È possibile cambiare il numero massimo per il file corrente in Power BI Desktop.You can change the maximum number for the current file in Power BI Desktop. Passare a File > Opzioni e impostazioni > Opzioni.Go to File > Options and Settings > Options. Nella sezione File corrente nel riquadro sinistro selezionare DirectQuery.In the Current File section in the left pane, select DirectQuery.

Impostazione del numero massimo di connessioni DirectQuery

L'impostazione è abilitata solo se nel report corrente è presente almeno un'origine DirectQuery.The setting is only enabled when there's at least one DirectQuery source in the current report. Il valore si applica a tutte le origini DirectQuery e a tutte le nuove origini DirectQuery aggiunte allo stesso report.The value applies to all DirectQuery sources, and to any new DirectQuery sources added to the same report.

Se si aumenta il valore di Numero massimo di connessioni per origine dati, è possibile inviare un numero maggiore di query, fino al numero massimo specificato, all'origine dati sottostante.Increasing Maximum connections per data source ensures more queries, up to the maximum number specified, can be sent to the underlying data source. Questo approccio è utile se in un'unica pagina sono presenti numerosi oggetti visivi o se molti utenti accedono a un report contemporaneamente.This approach is useful when many visuals are on a single page, or many users access a report at the same time. Quando viene raggiunto il numero massimo di connessioni, le query in eccesso vengono accodate fino a quando non diventa disponibile una connessione.Once the maximum number of connections is reached, further queries are queued until a connection becomes available. L'aumento di questo limite comporta un carico maggiore dell'origine sottostante. L'impostazione quindi non garantisce il miglioramento delle prestazioni complessive.Increasing this limit does result in more load on the underlying source, so the setting isn't guaranteed to improve overall performance.

Dopo la pubblicazione di un report, il numero massimo di query simultanee inviate all'origine dati sottostante dipende anche da limiti fissi,Once a report is published, the maximum number of concurrent queries sent to the underlying data source also depend upon fixed limits. che dipendono dall'ambiente di destinazione in cui il report viene pubblicato.The limits depend on the target environment to which the report is published. Ambienti diversi, come Power BI, Power BI Premium o Server di report di Power BI, possono imporre ognuno limiti diversi.Different environments, such as Power BI, Power BI Premium, or Power BI Report Server, can impose different limits.

Nota

L'impostazione del numero massimo di connessioni DirectQuery si applica a tutte le origini DirectQuery quando sono abilitati i metadati avanzati, ovvero l'impostazione predefinita per tutti i modelli creati in Power BI Desktop a partire da ottobre 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.

Diagnosi dei problemi di prestazioniDiagnosing performance issues

Questa sezione descrive come diagnosticare i problemi di prestazioni o come ottenere informazioni più dettagliate per consentire l'ottimizzazione dei report.This section describes how to diagnose performance issues, or how to get more detailed information to allow the reports to be optimized.

È consigliabile avviare la diagnosi dei problemi di prestazioni in Power BI Desktop piuttosto che nel servizio Power BI.We recommended that you start diagnosis of performance issues in Power BI Desktop, rather than in the Power BI service. I problemi di prestazioni sono spesso basati sulle prestazioni dell'origine sottostante.Performance issues are often based on the performance of the underlying source. Identificare e diagnosticare i problemi è più facile nell'ambiente più isolato di Power BI Desktop.You can more easily identify and diagnose issues in the more isolated environment of Power BI Desktop. Questo approccio elimina inizialmente alcuni componenti, come Power BI Gateway.This approach initially eliminates certain components, such as the Power BI gateway. Se i problemi di prestazioni sono assenti da Power BI Desktop, esaminare le specifiche del report nel servizio Power BI.If the performance issues are absent from Power BI Desktop, investigate the specifics of the report in the Power BI service. L'analizzatore prestazioni è uno strumento utile per identificare i problemi durante il processo.The performance analyzer is a useful tool for identifying issues throughout this process.

È allo stesso modo consigliabile provare in prima battuta a isolare eventuali problemi per un singolo oggetto visivo, piuttosto che per molti oggetti visivi di una pagina.Similarly, we recommend to first try to isolate any issues to an individual visual, rather than many visuals on a page.

Supponendo di aver eseguito i passaggi descritti nei paragrafi precedenti di questa sezione,Let's say the steps in the previous paragraphs in this section have been taken. si ha ora un singolo oggetto visivo in una pagina in Power BI Desktop che è ancora lento.We now have a single visual on a page in Power BI Desktop that is still sluggish. Per determinare le query inviate all'origine sottostante da Power BI Desktop, usare l'analizzatore prestazioni.Use the performance analyzer to determine the queries that Power BI Desktop sends to the underlying source. È anche possibile visualizzare tracce e informazioni di diagnostica che possono essere emesse dall'origine dati sottostante.It's also possible to view traces and diagnostic information that might be emitted by the underlying data source. Le tracce possono anche contenere dettagli utili sull'esecuzione della query e su come migliorarla.Traces might also contain useful details of how the query was executed, and how it can be improved.

Inoltre, anche in assenza di tali tracce nell'origine, è possibile visualizzare le query inviate da Power BI e i relativi tempi di esecuzione, come descritto nella sezione seguente.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.

Determinazione delle query inviate da Power BI DesktopDetermining the queries sent by Power BI Desktop

Per impostazione predefinita, Power BI Desktop registra gli eventi di una sessione specifica in un file di traccia denominato FlightRecorderCurrent.trc.By default, Power BI Desktop logs events during a given session to a trace file called FlightRecorderCurrent.trc.

Per alcune origini DirectQuery, questo log include tutte le query inviate all'origine dati sottostante.For some DirectQuery sources, this log includes all queries sent to the underlying data source. Le origini DirectQuery rimanenti verranno incluse in futuro.The remaining DirectQuery sources will be included in the future. Le origini che inviano query al log sono le seguenti:The following sources send queries to the log:

  • SQL ServerSQL Server
  • Database SQL di AzureAzure SQL Database
  • Azure SQL Data WarehouseAzure SQL Data warehouse
  • OracleOracle
  • TeradataTeradata
  • SAP HANASAP HANA

Il file di traccia si trova nella cartella AppData dell'utente corrente: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

Per accedere a questa cartella, in Power BI Desktop selezionare File > Opzioni e impostazioni > Opzioni e quindi Diagnostica.To get to this folder, in Power BI Desktop, select File > Options and settings > Options, and then select Diagnostics. Viene visualizzata la finestra di dialogo seguente:The following dialog appears:

Collegamento per aprire la cartella delle tracce

Quando si seleziona Apre la cartella delle tracce o dei dump di arresto anomalo del sistema in Opzioni di diagnostica si apre la cartella seguente: <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.

Passando alla cartella padre di tale cartella, verrà visualizzata la cartella contenente AnalysisServicesWorkspaces, che conterrà una cartella dell'area di lavoro per ogni istanza aperta di 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. Queste cartelle sono denominate con un suffisso intero, ad esempio AnalysisServicesWorkspace2058279583.These folders are named with an integer suffix, such as AnalysisServicesWorkspace2058279583.

All'interno di questa cartella c'è una cartella \Data.Inside that folder is a \Data folder. Contiene il file di traccia FlightRecorderCurrent.trc per la sessione corrente di Power BI.It contains the trace file FlightRecorderCurrent.trc for the current Power BI session. La cartella dell'area di lavoro corrispondente viene eliminata al termine della sessione di Power BI Desktop associata.The corresponding workspace folder is deleted when the associated Power BI Desktop session ends.

I file di traccia possono essere letti con lo strumento SQL Server Profiler,The trace files can be read using the SQL Server Profiler tool. incluso nel download gratuito di SQL Server Management Studio.Get it as part of the free download SQL Server Management Studio.

Dopo aver scaricato e installato SQL Server Management Studio, eseguire SQL Server Profiler.Once you download and install SQL Server Management Studio, run SQL Server Profiler.

SQL Server Profiler

Per aprire il file di traccia eseguire questa procedura:To open the trace file, take the following steps:

  1. In SQL Server Profiler selezionare File > Apri > File di traccia.In SQL Server Profiler, select File > Open > Trace file.

  2. Immettere il percorso del file di traccia per la sessione di Power BI attualmente aperta, ad esempio: C:\Utenti<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. Aprire FlightRecorderCurrent.trc.Open FlightRecorderCurrent.trc.

Vengono visualizzati tutti gli eventi dalla sessione corrente.All events from the current session are displayed. L'esempio con annotazioni illustrato di seguito evidenzia i gruppi di eventi.An annotated example is shown here, which highlights groups of events. Ogni gruppo presenta gli eventi seguenti:Each group has the following events:

  • Un evento Query Begin e Query End, che rappresenta l'inizio e la fine di una query DAX generata dall'interfaccia utente, ad esempio da un oggetto visivo o dalla compilazione di un elenco di valori nell'interfaccia utente del 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.
  • Una o più coppie di eventi DirectQuery Begin e DirectQuery End, che rappresentano una query inviata all'origine dati sottostante, nell'ambito della valutazione della query 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.

È possibile eseguire più query DAX in parallelo, quindi con possibilità di interfoliazione degli eventi di diversi gruppi.Multiple DAX queries can run in parallel, so events from different groups can be interleaved. Il valore di ActivityID può essere usato per determinare gli eventi appartenenti allo stesso gruppo.The value of the ActivityID can be used to determine which events belong to the same group.

SQL Server Profiler con gli eventi Query Begin e Query End

Di seguito sono riportate altre colonne di interesse:Other columns of interest are as follows:

  • TextData: dettagli testuali dell'evento.TextData: The textual detail of the event. I dettagli degli eventi Query Begin/End costituiscono la query DAX.For Query Begin/End events, the detail is the DAX query. I dettagli degli eventi DirectQuery Begin/End costituiscono la query SQL inviata all'origine sottostante.For DirectQuery Begin/End events, the detail is the SQL query sent to the underlying source. Nell'area in basso viene anche visualizzato l'elemento TextData per l'evento selezionato.The TextData for the currently selected event is also displayed in the region at the bottom.
  • EndTime: data/ora in cui l'evento è terminato.EndTime: The time when the event completed.
  • Duration: tempo in millisecondi impiegato per eseguire la query DAX o SQL.Duration: The duration, in milliseconds, taken to execute the DAX or SQL query.
  • Error: indica se si è verificato un errore. In quel caso l'evento verrà anche visualizzato in rosso.Error: Indicates if an error occurred, in which case the event is also displayed in red.

Nell'immagine precedente alcune delle colonne meno interessanti sono state ristrette per consentire una visualizzazione più agevole di altre colonne.In the image above, some of the less interesting columns have been narrowed, to allow other columns to be seen more easily.

L'approccio consigliato per l'acquisizione di una traccia utile per la diagnosi di un potenziale problema di prestazioni è il seguente:We recommend the following approach to capturing a trace to help diagnose a potential performance issue:

  • Aprire una singola sessione di Power BI Desktop per evitare la confusione di più cartelle di aree di lavoro.Open a single Power BI Desktop session, to avoid the confusion of multiple workspace folders.
  • Eseguire il set di azioni di interesse in Power BI Desktop.Do the set of actions of interest in Power BI Desktop. Includere alcune azioni aggiuntive per assicurare che gli eventi di interesse vengano scaricati nel file di traccia.Include a few additional actions, to ensure that the events of interest are flushed into the trace file.
  • Aprire SQL Server Profiler ed esaminare la traccia, come descritto in precedenza.Open SQL Server Profiler and examine the trace, as described previously. Tenere presente che se si chiude Power BI Desktop il file di traccia viene eliminato.Remember that closing Power BI Desktop deletes the trace file. Inoltre, le ulteriori azioni in Power BI Desktop non vengono visualizzate immediatamente:Also, further actions in Power BI Desktop don't immediately appear. è necessario chiudere e riaprire il file di traccia per vedere i nuovi eventi.The trace file should be closed and reopened to see the new events.
  • Mantenere le singole sessioni relativamente ridotte (10 secondi di azioni, non centinaia),Keep individual sessions reasonably small, perhaps 10 seconds of actions, not hundreds. per semplificare l'interpretazione del file di traccia.This approach makes it easier to interpret the trace file. C'è anche un limite applicato alle dimensioni del file stesso,There's also a limit on the size of the trace file. dal quale, nel caso di sessioni di lunga durata, possono essere eliminati gli eventi meno recenti.For long sessions, there's a chance of early events being dropped.

Informazioni sul formato delle query inviate da Power BI DesktopUnderstanding the form of query sent by Power BI Desktop

Il formato generale delle query create e inviate da Power BI Desktop usa selezioni secondarie per ognuna delle tabelle a cui si fa riferimento.The general format of queries created and sent by Power BI Desktop use subselects for each of the tables referenced. La query dell'editor di query definisce la selezione secondaria.The Query Editor query defines the subselect. Si supponga ad esempio che siano presenti le tabelle TPC-DS seguenti in SQL Server:For example, assume the following TPC-DS tables in SQL Server:

Tabelle TPC-DS in SQL Server

Si consideri la query seguente:Consider the following query:

Query di esempio

La query avrà come risultato l'oggetto visivo seguente:That query results in the following visual:

Risultato visivo di una query

L'aggiornamento dell'oggetto visivo avrà come risultato la query SQL illustrata qui.Refreshing that visual will result in the SQL query shown here. Come si può vedere sono disponibili tre selezioni secondarie per Web Sales, Item e Date_dim e ognuna restituisce tutte le colonne nella rispettiva tabella, anche se l'oggetto visivo fa effettivamente riferimento solo a quattro colonne.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. Le query ombreggiate nelle selezioni secondarie sono esattamente il risultato delle query definite nell'editor di query.These queries in the subselects that are shaded are exactly the result of the queries defined in Query Editor. Questo uso delle selezioni secondarie non sembra influire sulle prestazioni per le origini dati supportate finora per DirectQuery.Use of subselects in this manner hasn't been found to impact performance for the data sources so far supported for DirectQuery. Origini dati come SQL Server ottimizzano i riferimenti alle altre colonne.Data sources like SQL Server optimize away the references to the other columns.

Power BI usa questo modello perché la query SQL usata può essere fornita direttamente dall'analista.Power BI employs this pattern because the SQL query used can be provided directly by the analyst. La query viene usata "così come è", senza riscriverla.It's used "as provided", without an attempt to rewrite it.

Query SQL usata così com'è

Passaggi successiviNext steps

Questo articolo descrive aspetti di DirectQuery comuni a tutte le origini dati.This article describes aspects of DirectQuery that are common across all data sources. Alcuni dettagli sono specifici delle singole origini.There are certain details that are specific to individual sources. Vedere gli articoli seguenti relativi a origini specifiche:See the following articles covering specific sources:

Per altre informazioni su DirectQuery, vedere la risorsa seguente:For more information about DirectQuery, see the following resource: