Modalità DirectQuery (SSAS tabulare)
Analysis Services consente di creare report e modelli tabulari che recuperano dati e aggregazioni direttamente da un sistema di database relazionale mediante la modalità DirectQuery. I vantaggi comunemente attributi all'utilizzo della modalità DirectQuery includono la possibilità di eseguire query su set di dati di dimensioni eccessive per la memoria nonché l'aggiornamento dei dati in tempo reale.
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:
Panoramica della modalità DirectQuery
Creazione di modelli per l'utilizzo nella modalità DirectQuery
Origini dati per i modelli DirectQuery
Limitazioni sulla convalida e la progettazione nella modalità DirectQuery
Compatibilità delle formule
Connessione ai modelli DirectQuery
Sicurezza
Proprietà DirectQuery
Attività e argomenti correlati
Panoramica 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, nei modelli tabulari in modalità DirectQuery vengono utilizzati i dati archiviati in un database di SQL Server o in un data warehouse di SQL Server PDW. In fase di progettazione, è possibile importare tutti i dati o un campione limitato nella cache e compilare il modello nel modo consueto. Quando si è pronti per distribuire il modello, modificare la modalità operativa in DirectQuery. Dopo avere modificato la modalità operativa, per le query sul modello verrà utilizzata l'origine dati relazionale specificata (SQL Server o SQL Server PDW), non i dati memorizzati nella cache.
Quando si creano report o query in base al modello, è possibile utilizzare DAX, tuttavia le query DAX vengono convertite da Analysis Services in istruzioni Transact-SQL equivalenti per l'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 ottimizzati in memoria xVelocity. Gli indici columnstore xVelocity sono disponibili sia in SQL Server 2012 sia in SQL Server PDW per supportare le migliori prestazioni di DirectQuery.
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.
Progettazione di modelli per la modalità DirectQuery
Tutti i modelli tabulari vengono creati tramite la finestra di progettazione dei modelli in SQL Server Data Tools (SSDT), la quale prevede la creazione dei modelli in memoria per impostazione predefinita. Ciò significa che se si utilizza una quantità di dati eccessiva per la memoria, è consigliabile operare su un subset più limitato durante la fase di progettazione e accedere all'origine dati completa solo in seguito alla distribuzione del modello. Esistono diversi modi con cui è possibile utilizzare un subset limitato di dati:
Se si aggiungono dati al modello mediante l'Importazione guidata tabella, utilizzare un filtro per importare solo un subset di dati nella cache del database dell'area di lavoro. Dopo avere distribuito il modello, è possibile modificare la definizione della query per rimuovere o modificare il filtro.
Utilizzare un'origine dati di gestione temporanea e progettare il modello con le tabelle di gestione temporanea contenenti solo un subset di dati.
Aggiungere partizioni alle tabelle per gestire la quantità di dati che è necessario elaborare in ogni dato momento.
Quando si è pronti a passare alla modalità DirectQuery, è possibile modificare una proprietà per abilitare la modalità DirectQuery. Per ulteriori informazioni, vedere Abilitare la modalità 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: per i modelli DirectQuery è possibile utilizzare solo dati di una singola origine dati relazionale. L'origine può essere un'istanza di SQL Server o un'istanza di SQL Server PDW. Dopo aver abilitato la modalità DirectQuery per il modello, non è possibile utilizzare altri tipi di dati nella finestra di progettazione, incluse le tabelle aggiunte mediante operazioni di copia e incolla. Tutte le altre opzioni dell'importazione sono disabilitate. Inoltre, eventuali tabelle incluse in una query devono fare parte dell'origine dati specificata. Per ulteriori informazioni, vedere Origini dati.
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 ulteriori informazioni, vedere la sezione sulla convalida.
Utilizzo limitato delle funzioni DAX: alcune funzioni DAX non possono essere utilizzate nella modalità DirectQuery, pertanto è necessario sostituirle con altre funzioni o creare i valori utilizzando 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 ulteriori informazioni, vedere le sezioni seguenti: Convalida.
Compatibilità delle formule: in alcuni casi noti, la stessa formula può restituire risultati diversi in un modello ibrido o con memorizzazione nella cache rispetto a un modello DirectQuery che utilizza unicamente 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 ulteriori informazioni su queste differenze, vedere la sezione: Compatibilità delle formule.
Sicurezza: sono disponibili 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 ulteriori informazioni, vedere la sezione: Sicurezza.
Restrizioni client: in un modello in modalità DirectQuery è possibile eseguire query solo tramite 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 utilizza una query di tabella DAX come parte di un'istruzione Execute XMLA. Per ulteriori informazioni, vedere Riferimento alla sintassi di query DAX.
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 una modalità ibrida, la cache è ancora disponibile e può essere utilizzata per le query. In una modalità ibrida sono disponibili molte opzioni:
Quando sono disponibili sia la cache sia l'origine dati relazionale, è possibile impostare il metodo di connessione preferito, ma sarà infine il client a stabilire 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 ulteriori 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 ulteriori informazioni, vedere Impostare o modificare il metodo di connessione preferito per DirectQuery.
Origini dati per i modelli DirectQuery
Quando si passa all'ambiente di progettazione per l'abilitazione della modalità DirectQuery, le origini dati per il database dell'area di lavoro vengono convalidate per assicurarsi che provengano da una singola origine dati relazionale. 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 i report siano archiviati nell'origine dati specificata. Se i dati necessari per la modellazione non sono disponibili in questa origine, provare a utilizzare Integration Services o altri strumenti di data warehouse per importare i dati nel database o nel data warehouse scelto come origine dati per 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 le dimensioni dei dati che verranno utilizzati sono eccessive per la memoria, è possibile utilizzare l'opzione Visualizza anteprima e applica filtro nell'Importazione guidata tabella per selezionare un subset dei dati oppure scrivere uno script SQL per ottenere i dati desiderati. Un'altra opzione consiste nell'inserimento temporaneo di un subset di dati in un data warehouse per aumentare quindi le dimensioni dell'archivio dati al termine della fase di progettazione.
Attenzione |
---|
Poiché la modalità DirectQuery non supporta l'utilizzo di colonne calcolate, è necessario rimuovere quelle eventualmente presenti. È possibile convertire alcune colonne calcolate in misure, ma in altri casi potrebbe essere necessario creare colonne derivate nell'ambito della query o dello script di importazione dati oppure aggiungerle all'origine dati relazionale. |
Per visualizzare e risolvere gli errori di convalida, aprire l'Elenco errori in SQL Server Data Tools. Gli errori critici che impediscono l'utilizzo della modalità DirectQuery sono 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. Per una panoramica degli errori correlati a formule e colonne calcolate, vedere la sezione Compatibilità delle formule.
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 oppure i dati di un'origine relazionale, esiste la possibilità che i client possano ottenere risultati diversi, a seconda della modalità specificata nella stringa di connessione. Se è necessario essere certi che gli utenti dei report ottengano solo dati dell'origine relazionale, è necessario cancellare la cache o modificare il modello affinché utilizzi la modalità 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 inoltre supportate le misure che è possibile creare tramite misure implicite.
Non tutte le funzioni sono supportate. Poiché Analysis Services converte tutte le definizioni di misure e le formule DAX in istruzioni SQL quando si eseguono query su un modello DirectQuery, le formule non convertibili in Transact-SQL causano 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 nella modalità DirectQuery.
Alcune formule del modello vengono convalidate quando si passa alla modalità DirectQuery, ma restituiscono risultati diversi a seconda che vengano eseguite sulla cache o sull'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 delle funzioni DAX che potrebbero restituire risultati diversi quando il modello viene distribuito in tempo reale, vedere Compatibilità delle formule nella 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 si tenta di creare una query MDX su un modello DirectQuery, verrà generato un errore indicante che è impossibile trovare o elaborare il cubo. È possibile creare query sui modelli DirectQuery utilizzando Power View, formule DAX o query XMLA. Per ulteriori informazioni sull'esecuzione di query ad hoc sui modelli tabulari, vedere Accesso ai dati di 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 loro contesto di sicurezza.
Se la cache del modello è stata mantenuta, la cache è protetta tramite 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 sicurezza, sono disponibili due opzioni: è possibile utilizzare 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:
Predefinito
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 sull'impostazione di 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 utilizzati 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 ulteriori informazioni, vedere Abilitare la modalità DirectQuery (SSAS tabulare). |
Proprietà QueryMode |
Questa proprietà specifica il metodo di query predefinito per un modello DirectQuery. Impostare questa proprietà nella finestra di progettazione dei modelli quando si distribuisce il modello, ma se ne può eseguire l'override successivamente. La proprietà presenta questi valori:
Per ulteriori informazioni, vedere Impostare o modificare il metodo di connessione preferito per DirectQuery. |
Proprietà DirectQueryMode |
Dopo avere distribuito il modello, è possibile modificare l'origine dati delle query preferita per un modello DirectQuery, impostando 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:
Per ulteriori 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 relazionale in fase di esecuzione della 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 ulteriori informazioni, vedere Partizioni e modalità DirectQuery (SSAS tabulare).
Attività e argomenti correlati
Argomento |
Descrizione |
---|---|
Viene illustrato l'utilizzo delle partizioni nei modelli configurati per la modalità DirectQuery. |
|
Vengono illustrati i requisiti di compatibilità e le restrizioni riguardanti le formule che è possibile utilizzare nei modelli configurati per la modalità DirectQuery. |
|
Viene illustrato come modificare l'ambiente di progettazione in modo che supporti l'utilizzo della modalità DirectQuery. |
|
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. |
Vengono illustrati gli scenari di distribuzione di DirectQuery |
|
Configurare l'accesso in memoria o DirectQuery per un database di modello tabulare |
Vengono descritte alcune configurazioni comuni di DirectQuery. |
Viene illustrato come cancellare la cache del modello tabulare. |