Usare DirectQuery in Power BI DesktopUse DirectQuery in Power BI Desktop

Con Power BI Desktop, quando ci si connette all'origine dati, è sempre possibile importare una copia dei dati in Power BI Desktop.With Power BI Desktop, when you connect to your data source, it is always possible to import a copy of the data into the Power BI Desktop. Per alcune origini dati è disponibile un approccio alternativo: connettersi direttamente all'origine dati usando DirectQuery.For some data sources, an alternative approach is available: connect directly to the data source using DirectQuery.

Origini dati supportateSupported Data Sources

Per un elenco completo dei dati che supportano le origini dati DirectQuery, vedere Origini dati supportate da DirectQuery.For a full listing of data sources that support DirectQuery, see Data sources supported by DirectQuery.

Come connettersi con DirectQueryHow to Connect using DirectQuery

Quando si usa Recupera dati per connettersi a un'origine dati supportata da DirectQuery, la finestra di connessione consente di selezionare la modalità di connessione.When you use Get Data to connect to a data source supported by DirectQuery, the connection window lets you select how you want to connect.

Le differenze tra la selezione di Importa e DirectQuery sono le seguenti:The differences between selecting Import and DirectQuery are the following:

Importa : le tabelle e le colonne selezionate vengono importate in Power BI Desktop.Import – the selected tables and columns are imported into Power BI Desktop. Quando si crea o si interagisce con una visualizzazione, Power BI Desktop usa i dati importati.As you create or interact with a visualization, Power BI Desktop uses the imported data. È necessario aggiornare i dati, operazione che ripete l'importazione del set di dati completo, per visualizzare eventuali modifiche apportate ai dati sottostanti dopo l'importazione iniziale o l'aggiornamento più recente.You must refresh the data, which imports the full data set again, to see any changes that occurred to the underlying data since the initial import or the most recent refresh.

DirectQuery: nessun dato viene importato o copiato in Power BI Desktop.DirectQuery – no data is imported or copied into Power BI Desktop. Per le origini relazionali, le tabelle e le colonne selezionate vengono visualizzate nell'elenco Campi.For relational sources, the selected tables and columns appear in the Fields list. Per origini multidimensionali, ad esempio SAP Business Warehouse, le dimensioni e misure del cubo selezionato vengono visualizzate nell'elenco Campi.For multi-dimensional sources like SAP Business Warehouse, the dimensions and measures of the selected cube appear in the Fields list. Quando si crea o si interagisce con una visualizzazione, Power BI Desktop esegue una query sull'origine dati sottostante, quindi i dati visualizzati sono sempre correnti.As you create or interact with a visualization, Power BI Desktop queries the underlying data source, which means you’re always viewing current data.

Quando si usa DirectQuerysono disponibili molte modellazioni e trasformazioni dei dati, nonostante con alcune limitazioni.Many data modeling and data transformations are available when using DirectQuery, though with some limitations. Durante la creazione o l'interazione con una visualizzazione, è necessario eseguire query sull'origine sottostante e il tempo necessario per aggiornare la visualizzazione dipende dalle prestazioni dell'origine dati sottostante.When creating or interacting with a visualization, the underlying source must be queried and the time necessary to refresh the visualization is dependent on the performance of the underlying data source. Quando i dati necessari per soddisfare la richiesta sono stati richiesti di recente, Power BI Desktop usa dati recenti per ridurre il tempo necessario per visualizzare la visualizzazione.When the data necessary to service the request has recently been requested, Power BI Desktop uses recent data to reduce the time required to display the visualization. Selezionare Aggiorna dalla barra multifunzione Home per garantire che tutte le visualizzazioni vengano aggiornate con i dati correnti.Selecting Refresh from the Home ribbon will ensure all visualizations are refreshed with current data.

L'articolo Power BI e DirectQuery descrive DirectQuery nel dettaglio.The Power BI and DirectQuery article describes DirectQuery in detail. Vedere anche le sezioni seguenti per altre informazioni su vantaggi, limitazioni e considerazioni importanti relative all'uso di DirectQuery.Also, see the following sections for more information about benefits, limitations, and important considerations when using DirectQuery.

Vantaggi dell'uso di DirectQueryBenefits of using DirectQuery

L'uso di DirectQuery comporta alcuni vantaggi:There are a few benefits to using DirectQuery:

  • DirectQuery consente di creare visualizzazioni su set di dati molto grandi, in cui in caso contrario non sarebbe fattibile importare prima tutti i dati con la pre-aggregazioneDirectQuery lets you build visualizations over very large datasets, where it otherwise would be unfeasible to first import all of the data with pre-aggregation
  • Le modifiche ai dati sottostanti possono richiedere un aggiornamento dei dati e, per alcuni report, la necessità di visualizzare i dati correnti può richiedere trasferimenti di dati di grandi dimensioni, rendendo impraticabile reimportare i dati.Underlying data changes can require a refresh of data, and for some reports, the need to display current data can require large data transfers, making re-importing data unfeasible. Al contrario, i report di DirectQuery usano sempre dati aggiornatiBy contrast, DirectQuery reports always use current data
  • La limitazione del set di dati da 1 GB non si applica a DirectQueryThe 1 GB dataset limitation does not apply to DirectQuery

Limitazioni di DirectQueryLimitations of DirectQuery

Esistono attualmente alcune limitazioni all'uso di DirectQuery:There are currently a few limitations to using DirectQuery:

  • Tutte le tabelle devono provenire da un database singolo.All tables must come from a single database
  • Se la query dell'editor di query è eccessivamente complessa, si verifica un errore.If the Query Editor query is overly complex, an error will occur. Per risolvere l'errore è necessario eliminare il passaggio problematico nell'Editor di query o importare i dati invece di usare DirectQuery.To remedy the error you must either delete the problematic step in Query Editor, or Import the data instead of using DirectQuery. Per origini multidimensionali, ad esempio SAP Business Warehouse, non è disponibile alcun Editor di queryFor multi-dimensional sources like SAP Business Warehouse, there is no Query Editor
  • Il filtro delle relazioni è limitato a un'unica direzione, invece di includere entrambe le direzioni (benché sia possibile abilitare il filtro incrociato in entrambe le direzioni per DirectQuery come Funzionalità di anteprima).Relationship filtering is limited to a single direction, rather than both directions (though it is possible to enable cross filtering in both directions for DirectQuery as a Preview feature). Per origini multidimensionali, ad esempio SAP Business Warehouse, non vengono definite relazioni nel modelloFor multi-dimensional sources like SAP Business Warehouse, there are no relationships defined in the model
  • Le funzionalità di Business Intelligence per le gerarchie temporali non sono disponibili in DirectQuery.Time intelligence capabilities are not available in DirectQuery. Ad esempio, la gestione speciale delle colonne di date (anno, trimestre, mese, giorno e così via) non è supportata in modalità DirectQuery.For example, special treatment of date columns (year, quarter, month, day, so on) are not supported in DirectQuery mode.
  • Per impostazione predefinita, le limitazioni vengono inserite in espressioni DAX consentite nelle misurazioni. Per altre informazioni, vedere il paragrafo seguente (dopo questo elenco puntato).By default, limitations are placed on DAX expressions allowed in measures; see the following paragraph (after this bulleted list) for more information
  • È previsto un limite di 1 milione di righe per la restituzione di dati quando si usa DirectQuery.There is a 1 million row limit for returning data when using DirectQuery. Questo limite non influenza le aggregazioni o i calcoli usati per creare il set di dati restituiti usando DirectQuery, ma solo le righe restituite.This does not affect aggregations or calculations used to create the dataset returned using DirectQuery, only the rows returned. Ad esempio, è possibile aggregare 10 milioni di righe con la query eseguita sull'origine dati e restituire in modo accurato i risultati di tale aggregazione a Power BI usando DirectQuery purché i dati restituiti a Power BI siano inferiori a 1 milione di righe.For example, you can aggregate 10 million rows with your query that runs on the data source, and accurately return the results of that aggregation to Power BI using DirectQuery as long as the data returned to Power BI is less than 1 million rows. Se DirectQuery restituisce oltre 1 milione di righe, Power BI restituisce un errore.If more than 1 million rows would be returned from DirectQuery, Power BI returns an error.

Per assicurarsi che le prestazioni delle query inviate all'origine dati sottostante siano accettabili, vengono imposte limitazioni alle misure per impostazione predefinita.To ensure that queries sent to the underlying data source have acceptable performance, limitations are imposed on measures by default. Gli utenti avanzati possono scegliere di ignorare questa limitazione selezionando File > Opzioni e quindi Impostazioni > Opzioni e impostazioni > DirectQuery e quindi l'opzione Consenti misure senza limitazioni in modalità DirectQuery.Advanced users can choose to bypass this limitation by selecting File > Options and then Settings > Options and settings > DirectQuery, then selecting the option Allow unrestricted measures in DirectQuery mode. Quando questa opzione è selezionata, è possibile usare un'espressione DAX valida per una misura.When that option is selected, any DAX expression that is valid for a measure can be used. Gli utenti, tuttavia, devono tenere presente che alcune espressioni, che hanno prestazioni molto elevate quando i dati vengono importati, possono restituire query molto lente nell'origine back-end quando sono in modalità DirectQuery.Users must be aware, however, that some expressions that perform very well when the data is imported may result in very slow queries to the backend source when in DirectQuery mode.

Considerazioni importanti relative all'utilizzo di DirectQueryImportant considerations when using DirectQuery

I tre punti seguenti devono essere presi in considerazione quando si usa DirectQuery:The following three points should be taken into consideration when using DirectQuery:

  • Prestazioni e carico: tutte le richieste di DirectQuery vengono inviate al database di origine, quindi il tempo necessario per aggiornare un oggetto visivo dipende dal tempo impiegato dell'origine back-end per fornire i risultati di una o più query.Performance and load - All DirectQuery requests are sent to the source database, so the time required to refresh a visual is dependent on how long that back-end source takes to respond with the results from the query (or queries). L'utilizzo di DirectQuery è consigliato se tempo di risposta per gli oggetti visivi, che include la restituzione dei dati richiesti, è inferiore a cinque secondi, con un tempo di risposta massimo per la restituzione dei risultati di 30 secondi.The recommended response time (with requested data being returned) for using DirectQuery for visuals is five seconds or less, with a maximum recommended results response time of 30 seconds. Tempi più lunghi renderebbero l'esperienza dell'utente che usa il report del tutto insoddisfacente.Any longer, and the experience of a user consuming the report becomes unacceptably poor. Inoltre, dopo aver pubblicato un report nel servizio Power BI, l'utente riceverà un errore di timeout per tutte le query che richiedono più di qualche minuto per l'esecuzione.In addition, once a report is published to the Power BI service, any query that takes longer than a few minutes will timeout, and the user will receive an error.

    È necessario prendere in considerazione anche il carico sul database di origine, in base al numero di utenti di Power BI che utilizzerà il report pubblicato.Load on the source database should also be considered, based on the number of Power BI users who will consume the published report. Anche l'utilizzo della sicurezza a livello di riga (RLS) può influire in modo significativo. Un riquadro del dashboard non RLS condiviso da più utenti produce una sola query al database, mentre se si usa RLS in un riquadro del dashboard, quando questo viene aggiornato in genere viene richiesta una singola query per ogni utente, il che aumenta in modo significativo il carico sul database di origine e, potenzialmente, può avere ripercussioni negative sulle prestazioni.Using Row Level Security (RLS) can have a significant impact as well; a non-RLS dashboard tile shared by multiple users results in a single query to the database, but using RLS on a dashboard tile usually means the refresh of a tile requires one query per user, thus significantly increasing load on the source database and potentially impacting performance.

    Power BI crea query il più efficaci possibile.Power BI creates queries that are as efficient as possible. In determinate situazioni, tuttavia, la query generata potrebbe non essere abbastanza efficace da evitare un aggiornamento che non riesce.Under certain situations however, the generated query may not be efficient enough to avoid refresh that would fail. Ad esempio, quando una query generata recupera un numero eccessivamente elevato di righe, ossia oltre un milione, dall'origine dati back-end, si verifica l'errore seguente:One example of this situation is when a generated query would retrieve an excessively large number of rows (more than 1 million) from the back-end data source, in which case the following error occurs:

    The resultset of a query to external data source has exceeded
    the maximum allowed size of '1000000' rows.
    

    Questa situazione può verificarsi con un grafico semplice che include una colonna di cardinalità molto elevata, con l'opzione di aggregazione impostata su Non riepilogare.This situation can occur with a simple chart that includes a very high cardinality column, with the aggregation option set to Don’t Summarize. L'oggetto visivo deve contenere solo colonne con una cardinalità inferiore a un milione o deve avere i filtri appropriati applicati.The visual needs to only have columns with a cardinality below 1 million, or must have appropriate filters applied.

  • Sicurezza: tutti gli utenti che utilizzano un report pubblicato si connettono all'origine dati back-end con le credenziali immesse dopo la pubblicazione del servizio Power BI.Security - All users who consume a published report connect to the back-end data source using the credentials entered after publication to the Power BI service. Si tratta della stessa situazione che si verifica quando si importano i dati: tutti gli utenti vedono gli stessi dati, indipendentemente dalle eventuali regole di sicurezza definite nell'origine back-end.This is the same situation as data that is imported: all users see the same data, irrespective of any security rules defined in the backend source. I clienti che vogliono una sicurezza per singolo utente eseguono l'implementazione con origini DirectQuery e usano la sicurezza a livello di riga.Customers who want per-user security implement with DirectQuery sources and use RLS. Altre informazioni sulla sicurezza a livello di riga.Learn more about RLS.
  • Funzionalità supportate: non tutte le funzionalità in Power BI Desktop sono supportate in modalità DirectQuery oppure presentano alcune limitazioni.Supported features - Not all features in Power BI Desktop are supported in DirectQuery mode, or have some limitations. Nel servizio Power BI sono disponibili anche alcune funzionalità, ad esempio Informazioni rapide, che non possono essere usate nei set di dati con DirectQuery.In addition, there are some capabilities in the Power BI service (such as Quick Insights) that are not available for datasets using DirectQuery. Di conseguenza, se si usa DirectQuery è necessario tenere presente la limitazione di queste funzionalità per decidere se usare o meno DirectQuery.As such, the limitation of such features when using DirectQuery should be taken into consideration when determining whether to use DirectQuery.

Pubblicare nel servizio Power BIPublish to the Power BI service

I report creati con DirectQuery potranno successivamente essere pubblicati nel servizio Power BI.Reports created using DirectQuery can be published to the Power BI Service.

Se l'origine dati usata non necessita del gateway dati locale (Database SQL di Azure, Azure SQL Data Warehouse o Redshift), è necessario specificare le credenziali prima che venga visualizzato il report pubblicato nel servizio Power BI.If the data source used does not need the on-premises data gateway (Azure SQL Database, Azure SQL Data Warehouse, or Redshift), credentials must be provided before the published report will be displayed in the Power BI Service.

È possibile fornire credenziali selezionando l'icona dell'ingranaggio Impostazioni in Power BI, quindi Impostazioni.You can provide credentials by selecting the Settings gear icon in Power BI, then select Settings.

Power BI visualizza la finestra Impostazioni .Power BI displays the Settings window. Da qui, selezionare la scheda Set di dati e scegliere il set di dati che usa DirectQuery, quindi selezionare Modifica credenziali.From there, select the Datasets tab and choose the dataset that uses DirectQuery, and select Edit credentials.

Fino a quando non vengono fornite credenziali, l'apertura di un report pubblicato o l'esplorazione di un set di dati creato con una connessione DirectQuery a tali origini dati genererà un errore.Until credentials are supplied, opening a published report or exploring a dataset created with a DirectQuery connection to such data sources results in an error.

Per le origini dati diverse dal database SQL di Azure, da Azure SQL Data Warehouse o da Redshift che usano DirectQuery, occorre installare il gateway dati locale e l'origine dati deve essere registrata per stabilire una connessione dati.For data sources other than Azure SQL Database, Azure SQL Data Warehouse and Redshift that use DirectQuery, an on-premises data gateway must be installed and the data source must be registered to establish a data connection. Per altre informazioni, vedere Gateway dati locale.You can learn more about on-premises data gateway.

Passaggi successiviNext steps

Per altre informazioni su DirectQuery, vedere le risorse seguenti:For more information about DirectQuery, check out the following resources: