Modalità DirectQuery nei modelli tabulariDirectQuery mode in tabular models

Si applica a: SQL Server Analysis Services Azure Analysis Services Power bi Premium

Questo articolo descrive la modalità DirectQuery per i modelli tabulari Analysis Services a 1200 e livelli di compatibilità superiori.This article describes DirectQuery mode for Analysis Services tabular models at the 1200 and higher compatibility levels. È possibile abilitare la modalità DirectQuery per i modelli che si stanno progettando in Visual Studio o per i modelli tabulari che sono già stati distribuiti, è possibile passare alla modalità DirectQuery usando SQL Server Management Studio (SSMS).DirectQuery mode can be enabled for models you're designing in Visual Studio, or for tabular models that have already been deployed, you can change to DirectQuery mode by using SQL Server Management Studio (SSMS). Prima di scegliere la modalità DirectQuery, è importante comprendere i vantaggi e le limitazioni.Before choosing DirectQuery mode, it's important to understand both the benefits and limitations.

VantaggiBenefits

Per impostazione predefinita, i modelli tabulari utilizzano una cache in memoria per l'archiviazione dei dati e l'esecuzione di query.By default, tabular models use an in-memory cache to store and query data. Quando i modelli tabulari eseguono query sui dati che risiedono in memoria, anche le query più complesse possono essere molto veloci.When tabular models query data residing in-memory, even complex queries can be very fast. Tuttavia, esistono alcune limitazioni all'uso dei dati memorizzati nella cache. ad esempio, set di dati molto grandi possono superare la memoria disponibile e l'elaborazione (aggiornamento) dei dati del modello in memoria può richiedere una quantità eccessiva di risorse disponibili se necessario di frequente.However, there are some limitations to using cached data, for example, very large data sets can exceed available memory and processing (refresh) of in-memory model data can require excessive amounts of available resources if needed frequently.

DirectQuery supera queste limitazioni sfruttando allo stesso tempo le funzionalità RDBMS che rendono più efficiente l'esecuzione di query.DirectQuery overcomes these limitations while also leveraging RDBMS features making query execution more efficient. Con DirectQuery:With DirectQuery:

  • I dati sono aggiornati.Data is up-to-date. Poiché i dati vengono sempre sottoposti a query nell'origine dati, le applicazioni di Reporting client ricevono sempre i dati più recenti.Because data is always queried at the data source, client reporting applications are always getting the latest data.

  • Non è previsto un sovraccarico di gestione aggiuntivo per la manutenzione di una copia separata dei dati (nella cache in memoria).There is no extra management overhead of having to maintain a separate copy of the data (in the in-memory cache). Non è richiesta alcuna elaborazione (aggiornamento) dei dati del modello.No processing (refresh) of model data is required. Le modifiche ai dati di origine sottostanti possono essere immediatamente riflesse nelle query sul modello di dati.Changes to the underlying source data can be immediately reflected in queries against the data model.

  • I set di impostazioni possono essere più grandi della capacità di memoria di una risorsa di Analysis Services server.Datasets can be larger than the memory capacity of an Analysis Services server resource.

  • DirectQuery può sfruttare l'accelerazione delle query lato provider, ad esempio quella fornita dagli indici delle colonne ottimizzate per la memoria.DirectQuery can take advantage of provider-side query acceleration, such as that provided by memory-optimized column indexes.

  • La sicurezza può essere applicata dal database di origine back-end usando le funzionalità di sicurezza a livello di riga del database. in alternativa, è possibile usare le regole di sicurezza a livello di riga definite nel modello tramite DAX.Security can be enforced by the back-end source database by using row-level security features from the database (alternatively, you can use row-level security rules defined in the model by using DAX).

  • Se il modello contiene formule complesse che potrebbero richiedere più query, Analysis Services consente di eseguire l'ottimizzazione per garantire che il piano relativo alla query eseguita sul database back-end sia il più efficiente possibile.If the model contains complex formulas that might require multiple queries, Analysis Services can perform optimization to ensure that the query plan for the query executed against the back-end database will be as efficient as possible.

LimitazioniLimitations

I modelli tabulari in modalità DirectQuery presentano alcune limitazioni.Tabular models in DirectQuery mode have some limitations. Prima di cambiare modalità, è importante stabilire se i vantaggi dell'esecuzione di query sul server back-end superano la riduzione della funzionalità.Before switching modes, it's important to determine whether the advantages of query execution on the backend server outweigh any reduction in functionality. Se si modifica la modalità di un modello esistente in Visual Studio, Progettazione modelli tabulari invierà una notifica a tutte le funzionalità del modello non compatibili con la modalità DirectQuery.If you change the mode of an existing model in Visual Studio, Tabular model designer will notify you of any features in your model that are incompatible with DirectQuery mode. Tenere presenti le limitazioni seguenti:Keep the following limitations in mind:

FunzionalitàFeature RestrizioneRestriction
Origini datiData sources I modelli DirectQuery possono usare solo i dati di un singolo database relazionale dei tipi seguenti: database SQL di Azure, analisi delle sinapsi di Azure, SQL Server, Oracle e Teradata.DirectQuery models can only use data from a single relational database of the following types: Azure SQL Database, Azure Synapse Analytics, SQL Server, Oracle, and Teradata.
Stored procedure per SQLSQL stored procedures Per i modelli DirectQuery, le stored procedure non possono essere specificate in un'istruzione SQL per la definizione delle tabelle.For DirectQuery models, stored procedures cannot be specified in a SQL statement to define tables.
Tabelle calcolateCalculated tables Le tabelle calcolate non sono supportate nei modelli DirectQuery. Sono invece supportate le colonne calcolate.Calculated tables are not supported in DirectQuery models, but calculated columns are. Se si tenta di convertire un modello tabulare che contiene una tabella calcolata, viene visualizzato un errore che informa che il modello non può contenere i dati incollati.If you try to convert a tabular model that contains a calculated table, an error will occur stating that the model cannot contain pasted data.
Limiti delle queryQuery limits Il limite di righe predefinito è 1 milione righe.Default row limit is one million rows. Questo limite può essere aumentato specificando MaxIntermediateRowSize.This limit can be increases by specifying MaxIntermediateRowSize. Per altre informazioni, vedere Proprietà DAX.To learn more, see DAX Properties.
Formule DAXDAX formulas Quando si esegue una query su un modello tabulare in modalità DirectQuery, Analysis Services converte le formule DAX e le definizioni di misure in istruzioni SQL.When querying a tabular model in DirectQuery mode, Analysis Services converts DAX formulas and measure definitions into SQL statements. Le formule DAX che contengono elementi non convertibili in sintassi SQL causeranno errori di convalida nel modello.DAX formulas containing elements that cannot be converted into SQL syntax will return validation errors on the model.

Questa restrizione è per lo più limitata a determinate funzioni di tabella DAX.This restriction is mostly limited to certain DAX table functions. Per le misure, le formule DAX vengono convertite in operazioni basate su set nell'archivio dati relazionale.For measures, DAX formulas are converted to set-based operations against the relational data store. Per questo motivo, sono supportate tutte le misure create in modo implicito.This means that all measures created implicitly are supported.

Quando si verifica un errore di convalida, è necessario, riscrivere una formula, inserire una funzione diversa o applicare una soluzione alternativa usando colonne derivate nell'origine dati.When a validation error occurs, you'll need to re-write the formula, substituting a different function, or workaround it by using derived columns in the data source. Se in un modello tabulare sono incluse formule che contengono funzioni incompatibili, verranno segnalate quando si passa alla modalità DirectQuery nella finestra di progettazione.If a tabular model includes formulas containing incompatible functions, it will be reported when you switch to DirectQuery mode in the designer.

Nota: alcune formule nel modello possono essere convalidate quando si passa alla modalità DirectQuery, ma restituiscono risultati diversi quando vengono eseguite nella cache rispetto all'archivio dati relazionale.Note: Some formulas in the model might validate when you switch the model to DirectQuery mode, but return different results when executed against the cache vs. the relational data store. Ciò è dovuto al fatto che i calcoli eseguiti sulla cache usano la semantica del motore di analisi in memoria, che contiene le funzionalità per emulare il comportamento di Excel, mentre le query sui dati archiviati nell'origine dati relazionale usano la semantica di SQL.This is because calculations against the cache use the semantics of the in-memory analytics engine, which contains features meant to emulate the behavior of Excel, whereas queries against data stored in the relational data source use the semantics of SQL.

Coerenza delle formulaFormula consistency In alcuni casi, la stessa formula può restituire risultati diversi in un modello memorizzato nella cache rispetto a un modello DirectQuery che usa unicamente l'archivio dati relazionale.In certain cases, the same formula can return different results in a cached model compared to a DirectQuery model that uses only the relational data store. Queste differenze sono una conseguenza delle differenze semantiche tra il motore di analisi in memoria e l'origine dati.These differences are a consequence of the semantic differences between the in-memory analytics engine and the data source.

Limitazioni MDXMDX limitations Nessun nome di oggetto relativo.No relative object names. Tutti i nomi di oggetto devono essere completi.All object names must be fully qualified.

Nessuna istruzione MDX con ambito sessione (set denominati, membri calcolati, celle calcolate, totali visualizzati, membri predefiniti e così via), ma è possibile usare costrutti con ambito query, come la clausola 'WITH'.No session-scope MDX statements (named sets, calculated members, calculated cells, visual totals, default members, and so forth), but you can use query-scope constructs, such as the 'WITH' clause.

Nessuna tupla con membri da livelli diversi in clausole sub-SELECT MDX.No tuples with members from different levels in MDX subselect clauses.

Nessuna gerarchia definita dall'utente.No user-defined hierarchies.

Nessuna query SQL nativa. Normalmente, Analysis Services supporta un subset T-SQL, ma non per modelli DirectQuery.No native SQL queries (normally, Analysis Services supports a T-SQL subset, but not for DirectQuery models).

Connessione a un'origine datiConnecting to a data source

Quando si progetta un modello DirectQuery in Visual Studio, la connessione a un'origine dati e la selezione delle tabelle e dei campi da includere nel modello sono molto uguali a quelli dei modelli in memoria.When designing a DirectQuery model in Visual Studio, connecting to a data source and selecting the tables and fields to include in your model is much the same as with in-memory models.

Se è già stata attivata la modalità DirectQuery ma non è ancora stata eseguita la connessione a un'origine dati, è possibile usare il metodo Get Data (o l'importazione guidata dati per le origini dati del provider Legacy) per connettersi a un'origine dati, selezionare tabelle e campi e così via.If you've already turned on DirectQuery but haven't yet connected to a data source, you can use Get Data (or Data Import Wizard for legacy provider data sources) to connect to a data source, select tables and fields, and so on. La differenza è che al termine dell'operazione nessun dato viene effettivamente importato nella cache in memoria.The difference will be when you finish, no data is actually imported to the in-memory cache.

Importazione DirectQuery completata

Se si è già usato Get data per importare dati, ma non è ancora stata attivata la modalità DirectQuery, quando si esegue questa operazione, la cache in memoria verrà cancellata.If you've already used Get Data to import data, but haven't yet turned on DirectQuery mode, when you do, the in-memory cache will be cleared.

Aggiunta di dati di esempio a un progetto di modello DirectQueryAdding sample data to a DirectQuery model project

Per impostazione predefinita, quando si usa Progettazione modelli tabulari in Visual Studio (SSDT) per progettare un progetto di modello tabulare DirectQuery, il database dell'area di lavoro del modello non contiene dati.By default, when using Tabular model designer in Visual Studio (SSDT) to design a DirectQuery tabular model project, the model's workspace database doesn't contain any data. Esiste una partizione predefinita per ogni tabella e questa partizione indirizza tutte le query all'origine dati.There is one default partition for each table and this partition directs all queries to the data source. Poiché DirectQuery è stato introdotto per la prima volta, Progettazione modelli tabulari include una funzionalità Imposta come esempio in Gestione partizioni.Since DirectQuery was first introduced, Tabular model designer includes a Set as Sample feature in Partition Manager. Questa funzionalità consente di aggiungere una partizione di copia alle tabelle che possono essere utilizzate per importare una piccola quantità di dati di esempio nel database dell'area di lavoro.This feature allows adding a copy partition to tables that can be used to import a small amount of sample data into the workspace database. Questa funzionalità è utile per convalidare le decisioni di modellazione senza influisca sull'origine dati.This feature is meant help validate modeling decisions without impacting the data source.

Importante

Attualmente, la funzionalità Imposta come esempio in Progettazione modelli tabulari non è supportata.Currently, the Set as Sample feature in Tabular model designer is not supported. La tabella ignora non <TableName> contiene una partizione di esempio. per usare i dati in SSDT, aggiungere avvisi di partizione di esempio.Disregard Table <TableName> does not contain a sample partition; to use data in SSDT please add a sample partition warnings.

Distribuzione di modelli DirectQueryDeploying DirectQuery models

I modelli DirectQuery vengono distribuiti allo stesso modo dei modelli di importazione.DirectQuery models are deployed the same as import models. Tuttavia, a differenza dei modelli di importazione, se un modello DirectQuery contiene elementi calcolati, ad esempio colonne calcolate o gruppi di calcolo, dopo la distribuzione è necessario eseguire un processo di ricalcolo su tutte le tabelle.However, unlike import models, if a DirectQuery model contains calculated items such as calculated columns or calculation groups, after being deployed you must perform a Process Recalc on all tables. Per altre informazioni, vedere elaborare database, tabelle o partizioni.To learn more, see Process database, table, or partition.

Vedi ancheSee also

Abilitare la modalità DirectQuery in Visual StudioEnable DirectQuery mode in Visual Studio
Abilitare la modalità DirectQuery in SSMSEnable DirectQuery mode in SSMS
Definire le partizioni nei modelli DirectQuery testare un modello in modalità DirectQueryDefine partitions in DirectQuery models Test a model in DirectQuery mode
Origini dati supportate in Azure Analysis ServicesData sources supported in Azure Analysis Services
Origini dati supportate in SQL Server Analysis Services modelli tabulari 1400 e versioni successive.Data sources supported in SQL Server Analysis Services tabular 1400 and higher models.