Condividi tramite


Modalità DirectQuery (SSAS tabulare)

Analysis Services consente di recuperare i dati e creare report da un modello tabulare recuperando dati e aggregazioni direttamente da un sistema di database relazionale usando la modalità DirectQuery. In questo argomento vengono illustrate le differenze tra i modelli tabulari standard residenti unicamente in memoria e i modelli tabulari in grado di eseguire query su un'origine dati relazionale. Viene inoltre descritto come creare e distribuire un modello destinato a essere utilizzato nella modalità DirectQuery.

Sezioni dell'argomento:

Vantaggi della modalità DirectQuery

Per impostazione predefinita, i modelli tabulari utilizzano una cache in memoria per l'archiviazione dei dati e l'esecuzione di query. Poiché i modelli tabulari utilizzano dati residenti in memoria, anche le query più complesse possono essere molto veloci. Esistono tuttavia alcuni inconvenienti legati all'utilizzo dei dati memorizzati nella cache:

  • I dati non vengono aggiornati quando i dati di origine cambiano. È necessario elaborare il modello per ottenere gli aggiornamenti ai dati.

  • Quando si spegne il computer che ospita il modello, la cache viene salvata su disco e dovrà essere riaperta al caricamento del modello o all'apertura del file PowerPivot. Le operazioni di caricamento e salvataggio possono richiedere molto tempo.

Al contrario, la modalità DirectQuery prevede l'utilizzo dei dati archiviati in un database di SQL Server. Quando si crea il modello, si importano nella cache tutti i dati o solo parte di essi e quando si distribuisce il modello, si specifica che per le query eseguite sul modello l'origine dati deve essere SQL Server, non i dati memorizzati nella cache. Tutte le query DAX sui dati vengono tradotte da Analysis Services in istruzioni SQL equivalenti rispetto all'origine dati relazionale specificata.

La distribuzione di un modello tramite la modalità DirectQuery comporta molti vantaggi:

  • È possibile disporre di un modello su set di dati troppo grandi per essere contenuti in memoria nel server Analysis Services.

  • I dati sono sempre aggiornati e non si verifica alcun overhead di gestione supplementare legato alla necessità di conservare una copia separata dei dati. Le modifiche ai dati di origine sottostanti possono essere immediatamente riflesse nelle query sul modello di dati.

  • La modalità DirectQuery può trarre vantaggio dall'accelerazione delle query lato provider, ad esempio quella fornita dagli indici di colonna con ottimizzazione per la memoria xVelocity.

  • Qualsiasi livello di sicurezza applicato dal database back-end verrà sicuramente applicato, utilizzando la sicurezza a livello di riga. Al contrario, se si utilizzano i dati memorizzati nella cache, può essere difficile assicurarsi che la cache sia protetta esattamente come i dati nel server.

  • 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.

Creazione di modelli per l'utilizzo nella modalità DirectQuery

I modelli tabulari vengono creati usando la finestra di progettazione modelli SQL Server Data Tools (SSDT). Poiché in Progettazione modelli tutti i modelli vengono creati in memoria in fase di modellazione, se le dimensioni dei dati sono troppo elevate per la memoria, è opportuno importare solo un subset dei dati nella cache utilizzata dal database dell'area di lavoro.

Quando si è pronti a passare alla modalità DirectQuery, è possibile modificare una proprietà per abilitare la modalità DirectQuery. Per altre informazioni, vedere Abilitare la modalità di progettazione DirectQuery (SSAS tabulare).

Quando si esegue questa operazione, in Progettazione modelli viene automaticamente configurato il database dell'area di lavoro per l'esecuzione in una modalità ibrida che consente l'utilizzo dei dati memorizzati nella cache. Vengono inoltre segnalate all'utente le caratteristiche del modello non compatibili con la modalità DirectQuery. Di seguito sono elencati i requisiti principali da tenere presente:

  • Origini dati: I modelli DirectQuery possono usare solo dati da una singola origine dati SQL Server. Dopo avere attivato la modalità DirectQuery per un modello, non è possibile utilizzare altri tipi di dati in Progettazione modelli, incluse le tabelle aggiunte tramite operazioni di copia e incolla. Tutte le altre opzioni dell'importazione sono disabilitate. Eventuali tabelle incluse in una query devono appartenere all'origine dati di SQL Server. Per altre informazioni, vedere Origini dati per modelli DirectQuery.

  • Supporto per le colonne calcolate: Le colonne calcolate non sono supportate per i modelli DirectQuery. È tuttavia possibile creare misure e indicatori di prestazioni chiave (KPI) utilizzabili sui set di dati. Per altre informazioni, vedere la sezione relativa alla convalida .

  • Uso limitato delle funzioni DAX: Alcune funzioni DAX non possono essere usate in modalità DirectQuery, quindi è necessario sostituirle con altre funzioni oppure creare i valori usando colonne derivate nell'origine dati. In Progettazione modelli è possibile eseguire la convalida in fase di progettazione quando si verificano errori causati dalla creazione di formule incompatibili con la modalità DirectQuery. Per altre informazioni, vedere le sezioni seguenti: Convalida.

  • Compatibilità delle formule: In alcuni casi noti, la stessa formula può restituire risultati diversi in un modello memorizzato nella cache o ibrido 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 xVelocity (VertiPaq) e SQL Server. Per altre informazioni su queste differenze, vedere questa sezione: Compatibilità delle formule.

  • Sicurezza: È possibile usare metodi diversi per proteggere i modelli a seconda della modalità di distribuzione. I dati memorizzati nella cache per i modelli tabulari vengono protetti tramite il modello di sicurezza dell'istanza di Analysis Services. È possibile proteggere i modelli DirectQuery tramite i ruoli, ma anche utilizzando la sicurezza definita nell'archivio dati relazionale. È possibile configurare il modello in modo che gli utenti che aprono un report basato su un modello solo DirectQuery possono visualizzare solo i dati per cui dispongono delle autorizzazioni in SQL Server. Per altre informazioni, vedere questa sezione: Sicurezza.

  • Restrizioni client: Quando un modello è in modalità DirectQuery, può essere eseguito solo una query usando DAX. Non è possibile utilizzare MDX per creare query. Pertanto, non è possibile utilizzare Excel PivotClient, perché Excel utilizza MDX.

    Tuttavia, è possibile creare query su un modello DirectQuery in SQL Server Management Studio se si usa una query di tabella DAX come parte di un'istruzione EXECUTE XMLA, per altre informazioni, vedere [Riferimento alla sintassi di query DAX](/dax/dax-syntax-reference

Dopo avere risolto tutti i problemi di progettazione e dopo avere testato il modello, è possibile procedere con la distribuzione. A questo punto, è possibile impostare il metodo preferito per rispondere alle query sul modello. Si desidera che gli utenti abbiano accesso alla cache o che utilizzino sempre e solo l'origine dati relazionale?

Se si distribuisce il modello in modalità ibrida, la cache è ancora disponibile e può essere usata per le query. In una modalità ibrida sono disponibili molte opzioni:

  • Quando la cache e l'origine dati relazionale sono entrambe disponibili, è possibile impostare il metodo di connessione preferito, ma sarà il client a stabilire in definitiva quale origine verrà utilizzata, tramite la proprietà della stringa di connessione DirectQueryMode.

  • È inoltre possibile configurare le partizioni sulla cache in modo che la partizione primaria utilizzata per la modalità DirectQuery non venga mai elaborata e debba sempre fare riferimento all'origine relazionale. Sono disponibili molti modi per utilizzare le partizioni allo scopo di ottimizzare la progettazione dei modelli e la creazione di report. Per altre informazioni, vedere Partizioni e modalità DirectQuery (SSAS tabulare).

  • Dopo avere distribuito il modello, è possibile modificare il metodo di connessione preferito. È ad esempio possibile utilizzare una modalità ibrida per i test e passare alla modalità Solo DirectQuery unicamente dopo avere testato accuratamente eventuali report o query che utilizzano il modello. Per altre informazioni, vedere Impostare o modificare il metodo di connessione preferito per DirectQuery.

Origini dati per i modelli DirectQuery

Non appena si modifica l'ambiente di progettazione per abilitare la modalità DirectQuery, le origini dati per il database dell'area di lavoro vengono convalidate per assicurarsi che provengano da una sola origine dati SQL Server. Nei modelli DirectQuery non sono consentiti dati da altre origini, inclusi i dati incollati da un'operazione di copia.

Se si intende utilizzare il modello nella modalità DirectQuery, è necessario assicurarsi che tutti i dati necessari per il report che si desidera creare siano archiviati nel database di SQL Server specificato. Se i dati necessari per la modellazione non sono disponibili in questa origine, valutare la possibilità di utilizzare Integration Services o altri strumenti di data warehouse per importare i dati in un database di SQL Server utilizzato come origine dati DirectQuery.

Limitazioni sulla convalida e la progettazione nella modalità DirectQuery

Quando si crea un modello da utilizzare nella modalità DirectQuery, è necessario caricare inizialmente una parte dei dati nella cache. Se i dati che si useranno alla fine sono troppo grandi per adattarsi alla memoria, è possibile usare l'opzione Anteprima & Filtro nella procedura guidata Importazione tabella per selezionare un subset di dati o scrivere uno script SQL per ottenere i dati desiderati.

Avviso

Poiché la modalità DirectQuery non supporta l'utilizzo delle colonne calcolate, se sono presenti colonne che si desidera combinare o su cui si desidera eseguire altre operazioni, è necessario prevederlo in anticipo e creare le definizioni delle colonne nello script o nella query di importazione dati.

Per visualizzare e risolvere gli errori di convalida, aprire l'elenco errori in SQL Server Data Tools. Gli errori critici che impediscono l'uso della modalità DirectQuery vengono visualizzati nella scheda Errori . È necessario correggere questi errori prima di passare alla modalità DirectQuery. Gli errori di convalida più difficili da risolvere sono in genere correlati alle formule non supportate nella modalità DirectQuery. Vedere la sezione Compatibilità formule per una panoramica degli errori correlati alle formule e alle colonne calcolate.

Nell'elenco seguente sono riportate altre considerazioni da ricordare quando si crea un modello per l'accesso DirectQuery:

  • In modalità Solo DirectQuery , i risultati di un report possono variare a seconda del contesto di sicurezza dell'utente che visualizza i risultati. È necessario testare i modelli con credenziali diverse per assicurarsi che gli utenti ottengano i risultati previsti.

  • Se si configura un modello per la modalità ibrida, nella quale è possibile utilizzare la cache o i dati da SQL Server, esiste la possibilità che i client che si connettono a ogni origine possano ottenere risultati diversi, a seconda della modalità specificata nella stringa di connessione. Qualora sia necessario assicurarsi che gli utenti di report vedano solo i dati provenienti da SQL Server, è necessario cancellare la cache o impostare il modello su DirectQueryOnly.

Compatibilità delle formule per i modelli DirectQuery

È possibile che alcuni modelli contengano formule non supportate nella modalità DirectQuery e che quindi debbano essere riprogettati per evitare errori di convalida. Di seguito sono riportate alcune limitazioni sulle formule supportate nella modalità DirectQuery:

  • Le colonne calcolate non sono supportate nei modelli tabulari per cui è abilitata la modalità DirectQuery, nemmeno nei modelli ibridi. Se un modello richiede colonne calcolate, convertirle in colonne derivate tramite Transact-SQL nella definizione dell'importazione.

  • I modelli DirectQuery supportano l'utilizzo delle formule DAX nelle misure, convertite in operazioni basate su set nell'archivio dati relazionale. Sono supportate tutte le misure create tramite misure implicite.

  • Non tutte le funzioni sono supportate. Poiché Analysis Services converte tutte le formule DAX e le definizioni di misura in istruzioni SQL durante l'esecuzione di query su un modello DirectQuery, qualsiasi formula contenente elementi che non possono essere convertiti in Transact-SQL attiverà errori di convalida nel modello. Ad esempio, le funzioni di Business Intelligence per le gerarchie temporali non sono supportate. Anche le funzioni supportate, ad esempio le funzioni statistiche, possono assumere comportamenti diversi. Per un elenco completo dei problemi di compatibilità, vedere Compatibilità delle formule in modalità DirectQuery.

  • Alcune formule del modello vengono convalidate quando si passa alla modalità DirectQuery, ma restituiscono risultati diversi a seconda che vengano eseguite nella cache o nell'archivio dati relazionale. Il motivo è che per i calcoli effettuati sulla cache viene utilizzata la semantica del motore di analisi in memoria xVelocity (VertiPaq) contenente molte funzionalità intese a emulare il comportamento di Excel, mentre per le query eseguite sui dati archiviati nell'archivio dati relazionale viene utilizzata necessariamente la semantica di SQL Server. Per un elenco di funzioni DAX che potrebbero restituire risultati diversi quando il modello viene distribuito in tempo reale, vedere Compatibilità delle formule in modalità DirectQuery.

Connessione ai modelli DirectQuery

Non è possibile connettere i client che utilizzano MDX come linguaggio di query ai modelli che utilizzano la modalità DirectQuery. Se ad esempio si tenta di creare una query MDX su un modello DirectQuery, un errore indicherà che è impossibile trovare o elaborare il cubo. È possibile creare query sui modelli DirectQuery usando Power View, formule DAX o query XMLA. Per altre informazioni su come eseguire query ad hoc su modelli tabulari, vedere Accesso ai dati del modello tabulare.

Se si utilizza un modello ibrido, è possibile specificare se gli utenti si connettono alla cache o utilizzano dati DirectQuery specificando la proprietà della stringa di connessione, DirectQueryMode.

Sicurezza nella modalità DirectQuery

Durante la creazione del modello si specificano le autorizzazioni utilizzate per recuperare i dati di origine. Si tratterà spesso delle proprie credenziali o di un account utilizzato per lo sviluppo. Tuttavia, quando si imposta il modello sulla modalità DirectQuery, il contesto di sicurezza è più complesso:

  • Valutare se gli utenti dispongono del livello necessario di accesso ai dati nell'archivio dati relazionale.

  • Gli utenti che visualizzano lo stesso modello o report potrebbero visualizzare dati diversi, a seconda del contesto di sicurezza dell'utente.

  • Se la cache del modello è stata mantenuta, la cache viene protetta usando il modello di sicurezza di Analysis Services (ruoli). La cache potrebbe contenere dati visualizzabili dal progettista del modello, ma non dall'utente. Il progettista di modelli e report ha la facoltà di cancellare la cache o di proteggere questi dati controllando l'accesso attraverso i ruoli.

  • Un modello mediante il quale si risponde alle query dalla cache non può rappresentare l'utente corrente in caso di connessione all'origine dati. Se si desidera rappresentare l'utente corrente in caso di connessione all'origine dati, è necessario utilizzare la modalità DirectQuery.

  • Se il modello di report richiede la sicurezza, sono disponibili due opzioni: è possibile usare i ruoli di Analysis Services oppure impostare le autorizzazioni a livello di riga per l'origine dati. La sicurezza nell'origine dati relazionale viene utilizzata per controllare l'accesso alle tabelle e la sicurezza a livello di colonna non è supportata. Di conseguenza, se gli utenti di un'area non dispongono delle autorizzazioni per visualizzare le cifre sulle vendite di altre aree, un report che include una misura basata sulla tabella Sales restituirebbe spazi vuoti o un errore.

La proprietà delle impostazioni di rappresentazione consente di specificare le credenziali utilizzate per la connessione a un modello utilizzando DirectQuery, per un modello solo DirectQuery o per un modello ibrido che risponde alle query tramite DirectQuery. La proprietà presenta i valori seguenti:

Default
Vengono utilizzate le credenziali specificate nell'importazione guidata per connettersi all'origine dati. Può trattarsi di un utente di Windows specifico o dell'account di servizio.

ImpersonateCurrentUser
Consente di utilizzare le credenziali dell'utente corrente per connettersi all'origine dati.

Per informazioni su come impostare queste proprietà, vedere Scenari di distribuzione DirectQuery (SSAS tabulare).

Proprietà DirectQuery

Nella tabella seguente sono elencate le proprietà che è possibile impostare in SQL Server Data Tools e, in SQL Server Management Studio, per abilitare DirectQuery e controllare l'origine dei dati usati per le query sul modello.

Nome proprietà Descrizione
Proprietà DirectQueryMode Questa proprietà consente l'utilizzo della modalità DirectQuery in Progettazione modelli. È necessario impostare questa proprietà su On per modificare qualsiasi altra proprietà DirectQuery.

Per altre informazioni, vedere Abilitare la modalità progettazione DirectQuery (SSAS tabulare).For more information, see Enable DirectQuery Design Mode (SSAS Tabular).
Proprietà QueryMode Questa proprietà specifica il metodo di query predefinito per un modello DirectQuery e può essere impostata in Progettazione modelli durante la distribuzione del modello. In seguito sarà comunque possibile eseguirne l'override. La proprietà presenta questi valori:

DirectQuery : questa impostazione specifica tutte le query per il modello devono usare solo l'origine dati relazionale.

DirectQuery con In memoria : specifica che, per impostazione predefinita, le risposte alle query verranno fornite usando l'origine relazionale, salvo diversa indicazione nella stringa di connessione del client.

In memoria : questa impostazione specifica che le query devono essere risposte usando solo la cache.

In memoria con DirectQuery : specifica che, per impostazione predefinita, le risposte alle query verranno fornite utilizzando la cache, salvo diversa indicazione nella stringa di connessione del client.



Per altre informazioni, vedere Impostare o modificare il metodo di connessione preferito per DirectQuery.
Proprietà DirectQueryMode Dopo aver distribuito il modello, è possibile modificare l'origine dati di query preferita per un modello DirectQuery modificando questa proprietà in SQL Server Management Studio

Analogamente alla proprietà precedente, questa proprietà specifica l'origine dati predefinita per il modello e presenta questi valori:

InMemory: le query possono usare solo la cache.

DirectQuerywithInMemory: le query usano l'origine dati relazionale per impostazione predefinita, a meno che non diversamente specificato nel stringa di connessione dal client.

InMemorywithDirectQuery: le query usano la cache per impostazione predefinita, a meno che non diversamente specificato nella stringa di connessione dal client.

(DirectQuery: le query usano solo l'origine dati relazionale.



Per altre informazioni, vedere Impostare o modificare il metodo di connessione preferito per DirectQuery.
Proprietà Impostazioni di rappresentazione Questa proprietà definisce le credenziali utilizzate per la connessione all'origine dati SQL Server in fase di esecuzione query. È possibile impostare questa proprietà in Progettazione modelli e modificarne in seguito il valore, dopo la distribuzione del modello.

Si noti che queste credenziali vengono utilizzate unicamente per rispondere alle query sull'archivio dati relazionale. Non corrispondono alle credenziali utilizzate per l'elaborazione della cache di un modello ibrido.

La rappresentazione non può essere utilizzata se il modello viene utilizzato solo in memoria. L'impostazione ImpersonateCurrentUser non è valida, a meno che il modello non utilizzi la modalità DirectQuery.

Inoltre, se il modello include partizioni, è necessario scegliere una partizione da utilizzare come origine per le query in modalità DirectQuery. Per altre informazioni, vedere Partitions and DirectQuery Mode (SSAS Tabular) (Partizioni e modalità DirectQuery (SSAS tabulare).

Argomento Descrizione
Partizioni e modalità DirectQuery (SSAS tabulare) Viene illustrato l'utilizzo delle partizioni nei modelli configurati per la modalità DirectQuery.
Compatibilità delle formule DAX in modalità DirectQuery Vengono illustrati i requisiti di compatibilità e le restrizioni riguardanti le formule che è possibile utilizzare nei modelli configurati per la modalità DirectQuery.
Abilitare la modalità DirectQuery (SSAS tabulare) Viene illustrato come modificare l'ambiente di progettazione in modo che supporti l'utilizzo della modalità DirectQuery.
Modificare la partizione DirectQuery (SSAS tabulare) Viene illustrato come modificare la partizione DirectQuery.
Impostare o modificare il metodo di connessione preferito per DirectQuery Viene illustrato come impostare o modificare il metodo di connessione per i modelli configurati per DirectQuery.
Scenari di distribuzione DirectQuery (SSAS tabulare) Vengono illustrati gli scenari di distribuzione di DirectQuery
Configurare l'accesso in memoria o DirectQuery per un database di modello tabulare Esaminare le configurazioni di DirectQuery
Cancellare le cache di Analysis Services Cancellare la cache del modello tabulare

Vedere anche

Partizioni (SSAS tabulare)
Progetti di modello tabulare (SSAS tabulare)
Analizzare in Excel (SSAS tabulare)