Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
Questo articolo descrive la modalità DirectQuery per i modelli tabulari di Analysis Services ai livelli di compatibilità 1200 e superiori. La modalità DirectQuery può essere abilitata per i modelli che si sta progettando in Visual Studio o per i modelli tabulari già distribuiti, è possibile passare alla modalità DirectQuery usando SQL Server Management Studio (SSMS). Prima di scegliere la modalità DirectQuery, è importante comprendere i vantaggi e le limitazioni.
Vantaggi
Per impostazione predefinita, i modelli tabulari usano una cache in memoria per archiviare ed eseguire query sui dati. Quando i modelli tabulari eseguono query sui dati che risiedono in memoria, anche le query complesse possono essere molto veloci. 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 possono richiedere quantità eccessive di risorse disponibili, se necessario di frequente.
DirectQuery supera queste limitazioni sfruttando anche le funzionalità RDBMS che rendono più efficiente l'esecuzione delle query. Con DirectQuery:
I dati sono aggiornati. Poiché i dati vengono sempre sottoposti a query nell'origine dati, le applicazioni per la creazione di report client ottengono sempre i dati più recenti.
Non è previsto alcun sovraccarico di gestione aggiuntivo per mantenere una copia separata dei dati (nella cache in memoria). Non è necessaria alcuna elaborazione (aggiornamento) dei dati del modello. Le modifiche apportate ai dati di origine sottostanti possono essere immediatamente riflesse nelle query sul modello di dati.
I set di dati possono essere maggiori della capacità di memoria di una risorsa server Analysis Services.
DirectQuery può sfruttare l'accelerazione delle query sul lato del provider, ad esempio quella fornita dagli indici di colonna ottimizzati per la memoria.
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.
Se il modello contiene formule complesse che potrebbero richiedere più query, Analysis Services può eseguire l'ottimizzazione per garantire che il piano di query per la query eseguita sul database back-end sia il più efficiente possibile.
Limitazioni
I modelli tabulari in modalità DirectQuery presentano alcune limitazioni. Prima di passare alle modalità, è importante determinare se i vantaggi dell'esecuzione delle query nel server back-end superano qualsiasi riduzione delle funzionalità. Se si modifica la modalità di un modello esistente in Visual Studio, il progettista di modelli tabulari ti notificherà di eventuali funzionalità nel tuo modello che sono incompatibili con la modalità DirectQuery. Tenere presenti le limitazioni seguenti:
| Caratteristica / Funzionalità | Restrizione |
|---|---|
| Origini dati | I modelli DirectQuery possono usare solo i dati di un singolo database relazionale dei tipi seguenti: database SQL di Azure, Azure Synapse Analytics, SQL Server, Oracle e Teradata. |
| Stored procedure per SQL | Per i modelli DirectQuery, le stored procedure non possono essere specificate in un'istruzione SQL per definire le tabelle. |
| Tabelle calcolate | Le tabelle calcolate non sono supportate nei modelli DirectQuery, ma lo sono le colonne calcolate. Se si tenta di convertire un modello tabulare contenente una tabella calcolata, si verificherà un errore che informa che il modello non può contenere dati incollati. |
| Limiti delle interrogazioni | Il limite di riga predefinito è un milione di righe. Questo limite può essere maggiore specificando MaxIntermediateRowSize. Per altre informazioni, vedere Proprietà DAX. |
| Formule DAX | Quando si esegue una query su un modello tabulare in modalità DirectQuery, Analysis Services converte le formule DAX e le definizioni di misura in istruzioni SQL. Le formule DAX contenenti elementi che non possono essere convertiti in sintassi SQL restituiranno errori di convalida nel modello. Questa restrizione è principalmente limitata a determinate funzioni di tabella DAX. Per le misure, le formule DAX vengono convertite in operazioni basate su insiemi nell'archivio dati relazionale. Ciò significa che tutte le misure create in modo implicito sono supportate. Quando si verifica un errore di convalida, è necessario riscrivere la formula, sostituire una funzione diversa o soluzione alternativa usando colonne derivate nell'origine dati. Se un modello tabulare include formule contenenti funzioni incompatibili, verrà segnalato quando si passa alla modalità DirectQuery nella finestra di progettazione. Nota: alcune formule nel modello potrebbero convalidare quando si passa il modello alla modalità DirectQuery, ma restituiscono risultati diversi quando vengono eseguiti sulla cache rispetto all'archivio dati relazionale. Questo perché i calcoli sulla cache usano la semantica del motore di analisi in memoria, che contiene funzionalità progettate per emulare il comportamento di Excel, mentre le query sui dati archiviati nell'origine dati relazionale usano la semantica di SQL. |
| Coerenza della formula | In alcuni casi, la stessa formula può restituire risultati diversi in un modello memorizzato nella cache rispetto a un modello DirectQuery che usa solo l'archivio dati relazionale. Queste differenze sono una conseguenza delle differenze semantiche tra il motore di analisi in memoria e l'origine dati. |
| Limitazioni di MDX | Nessun nome di oggetto relativo. Tutti i nomi degli oggetti devono essere completamente qualificati. Non sono supportate le istruzioni MDX a livello di sessione (set denominati, membri calcolati, celle calcolate, totali visivi, membri predefiniti e così via), ma è possibile utilizzare costrutti a livello di query, ad esempio la clausola 'WITH'. Nessuna tupla con membri di livelli diversi nelle clausole di selezione secondaria MDX. Nessuna gerarchia definita dall'utente. Nessuna query SQL nativa (in genere Analysis Services supporta un subset T-SQL, ma non per i modelli DirectQuery). |
Connessione a un'origine dati
Quando si progetta un modello DirectQuery in Visual Studio, connettersi a un'origine dati e selezionare le tabelle e i campi da includere nel modello è molto simile ai modelli in memoria.
Se hai già attivato DirectQuery, ma non ti sei ancora connesso a un'origine dati, puoi utilizzare Ottieni dati (o la procedura guidata di importazione dati per le origini dati dei provider legacy) per connetterti a un'origine dati, selezionare tabelle, campi e così via. La differenza sarà quando si termina, non viene effettivamente importato alcun dato nella cache in memoria.
Se hai già usato Recupera dati per importare dati, ma non hai ancora attivato la modalità DirectQuery, quando lo fai, la cache in memoria verrà cancellata.
Aggiunta di dati di esempio a un progetto di modello DirectQuery
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. Esiste una partizione predefinita per ogni tabella e questa partizione indirizza tutte le query all'origine dati. Da quando DirectQuery è stato introdotto, il progettista di modelli tabulari comprende la funzionalità "Set as Sample" in "Partition Manager". Questa funzionalità consente di aggiungere una partizione di copia alle tabelle che possono essere usate per importare una piccola quantità di dati di esempio nel database dell'area di lavoro. Questa funzionalità consente di convalidare le decisioni di modellazione senza influire sull'origine dati.
Importante
Attualmente, la funzionalità Imposta come esempioin Progettazione modelli tabulari non è supportata. Ignorare gli avvisi che Table <TableName> non contiene una partizione di esempio; per utilizzare i dati in SSDT, si prega di aggiungere una partizione di esempio.
Distribuzione di modelli DirectQuery
I modelli DirectQuery vengono distribuiti come i modelli di importazione. Tuttavia, a differenza dei modelli di importazione, se un modello DirectQuery contiene elementi calcolati come colonne calcolate o gruppi di calcolo, dopo la distribuzione è necessario eseguire un ricalcolo processo in tutte le tabelle. Per altre informazioni, vedere Elaborare database, tabella o partizione.
Vedere anche
Abilitare la modalità DirectQuery in Visual Studio
Abilitare la modalità DirectQuery in SSMS
Definire partizioni nei modelli DirectQueryTestare un modello in modalità DirectQuery
Origini dati supportate in Azure Analysis Services
Origini dati supportate nei modelli tabulari 1400 e versioni successive di SQL Server Analysis Services.