Contesto nelle formule DAX

Importante :  Il presente articolo è stato tradotto automaticamente, vedere la dichiarazione di non responsabilità. Per visualizzare la versione inglese dell'articolo, fare clic qui.

Il contesto consente di eseguire analisi dinamiche, nelle quali i risultati di una formula possono venire modificati per riflettere la riga o la selezione della cella corrente e anche eventuali dati correlati. La comprensione del contesto e l'utilizzo efficace di quest'ultimo sono molto importanti per la compilazione di formule a prestazioni elevate, di analisi dinamiche e per la risoluzione dei problemi riscontrati nelle formule.

In questa sezione vengono definiti i diversi tipi di contesto: contesto di riga, contesto di query e contesto di filtro. Viene illustrato come viene valutato il contesto per le formule presenti nelle colonne calcolate e nelle tabelle pivot.

Nell'ultima parte di questo articolo sono forniti collegamenti a esempi dettagliati in cui viene illustrato il modo in cui i risultati delle formule cambiano in base al contesto.

Informazioni sul contesto

Le formule in PowerPivot possono dipendere dai filtri applicati in una tabella pivot, le relazioni tra tabelle e filtri utilizzati nelle formule. Contesto è ciò che è possibile eseguire analisi dinamica. Informazioni sul contesto è importante per la creazione e per la risoluzione dei problemi di formule.

Esistono diversi tipi di contesto: contesto di riga, contesto di query e contesto di filtro.

Il contesto di riga può essere considerato come la "riga corrente". Se è stata creata una colonna calcolata, il contesto di riga corrisponde ai valori in ogni singola riga e ai valori nelle colonne correlate alla riga corrente. Sono inoltre disponibili alcune funzioni (Funzione EARLIER e Funzione EARLIEST) tramite cui è possibile acquisire un valore dalla riga corrente e, successivamente, utilizzarlo durante l'esecuzione di un'operazione in un'intera tabella.

Con il termine contesto di query si intende il subset di dati che viene creato in modo implicito per ogni cella di una tabella pivot, in base alle intestazioni di riga e di colonna.

Il contesto di filtro è il set di valori consentiti in ogni colonna, in base ai vincoli di filtro applicati alla riga o definiti dalle espressioni di filtro all'interno della formula.

Torna all'inizio

Contesto di riga

Se si crea una formula in una colonna calcolata, nel contesto di riga per questa formula sono inclusi i valori di tutte le colonne presenti nella riga corrente. Se la tabella è correlata a un'altra tabella, il contenuto include anche tutti i valori dell'altra tabella che sono correlati alla riga corrente.

Ad esempio, si supponga di crea una colonna calcolata, = [spese trasporto] + [imposte]

, tramite cui vengono aggiunte insieme due colonne della stessa tabella. Questa formula ha un comportamento analogo a quello delle formule di una tabella di Excel, che fanno automaticamente riferimento ai valori della stessa riga. Le tabelle sono diverse dagli intervalli: non è possibile fare riferimento a un valore dalla riga precedente alla riga corrente mediante la notazione degli intervalli e non è possibile fare riferimento ad alcun singolo valore arbitrario in una tabella o in una cella. È sempre necessario utilizzare tabelle e colonne.

Il contesto di riga segue automaticamente le relazioni tra tabelle per determinare quali righe nelle tabelle correlate sono associate alla riga corrente.

Nella formula seguente viene ad esempio utilizzata la funzione RELATED per recuperare un valore relativo all'imposta da una tabella correlata, in base all'area in cui è stato eseguito l'ordine. Il valore dell'imposta viene determinato utilizzando il valore per area nella tabella corrente, effettuando la ricerca dell'area nella tabella correlata e quindi ottenendo l'aliquota di imposta per tale area dalla tabella correlata.

= [Spese trasporto] + RELATED('Region'[TaxRate])

Questa formula ottiene semplicemente l'aliquota di imposta per l'area corrente dalla tabella Area. Non è necessario conoscere o specificare la chiave che connette le tabelle.

Contesto di più righe

In DAX sono inoltre incluse funzioni che iterano i calcoli in una tabella. Queste funzioni possono presentare più righe correnti e contesti di riga correnti. In termini di programmazione, è possibile creare formule ricorsive in un ciclo interno ed esterno.

Si supponga ad esempio che la cartella di lavoro contiene una tabella di prodotti e una tabella Sales . Si potrebbe da elaborata l'intera tabella delle vendite, si riempie delle transazioni che comportano più prodotti, e trovare la più grande quantità ordinata per ogni prodotto in qualsiasi una sola transazione.

In Excel questo calcolo richiede una serie di riepiloghi intermedi, che dovrebbero essere ricompilati se i dati venissero modificati. Se si è un utente esperto di Excel, è possibile compilare formule in forma di matrice che eseguano tali calcoli. In alternativa, è possibile utilizzare un database relazionale per scrivere istruzioni sub-SELECT nidificate.

Tuttavia, tramite DAX è possibile compilare una singola formula mediante la quale viene restituito il valore corretto e i risultati vengono aggiornati automaticamente tutte le volte che si aggiungono dati alle tabelle.

=MAXX(Filter(Sales,[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])

Per una procedura dettagliata di questa formula, vedere Funzione EARLIER.

In breve, tramite funzione EARLIER viene archiviato il contesto di riga dall'operazione che ha preceduto l'operazione corrente. La funzione archivia sempre in memoria due set di contesto: uno rappresenta la riga corrente del ciclo interno della formula e l'altro rappresenta la riga corrente del ciclo esterno della formula. Tramite DAX vengono automaticamente inseriti i valori tra due cicli in modo da poter creare aggregazioni complesse.

Torna all'inizio

Contesto di query

Contesto di query si intende il subset di dati recuperati in modo implicito per una formula. Quando si rilascia una misura o un altro campo valore in una cella in una tabella pivot, il motore di PowerPivot esamina le intestazioni di riga e colonna, i filtri dei dati e i filtri dei report per determinare il contesto. Quindi, PowerPivot rende i calcoli necessari per popolare ogni cella della tabella pivot. Il set di dati recuperati è il contesto di query per ogni cella.

Poiché il contesto può essere modificato in base a dove si posiziona la formula, anche i risultati della formula possono essere modificati a seconda del fatto che la formula venga utilizzata in una tabella pivot con numerosi raggruppamenti e filtri o in una colonna calcolata senza filtri e contesto minimo.

Ad esempio, si supponga di che crea questa semplice formula per sommare i valori della colonna Profit della table:=SUM('Sales'[Profit]) vendite .

Se si utilizza tale formula in una colonna calcolata all'interno della tabella Sales , i risultati della formula sarà la stessa operazione per l'intera tabella, poiché il contesto di query per la formula è sempre l'intero set di dati della tabella Sales . I risultati avranno profitto per tutte le aree, tutti i prodotti, tutti gli anni, e così via.

In genere, tuttavia, non è necessario visualizzare lo stesso risultato centinaia di volte, poiché è più utile ottenere i profitti per un anno, un paese, un prodotto specifico o una combinazione di questi elementi, per pervenire quindi a un totale complessivo.

In una tabella pivot, è facile modificare contesto mediante l'aggiunta o rimozione di intestazioni di colonna e riga e aggiungendo o rimuovendo i filtri dei dati. È possibile creare una formula analoga a quella precedente, in una misura e quindi inserirla in una tabella pivot. Quando si aggiungono le intestazioni di colonna o una riga alla tabella pivot, si modifica il contesto di query in cui viene valutata la misura. Operazioni di filtro e sezionare inoltre influire sul contesto. Di conseguenza, la stessa formula, utilizzata in una tabella pivot, viene valutata in un contesto di query diverso per ogni cella.

Torna all'inizio

Contesto di filtro

Il contesto di filtro viene aggiunto quando si specificano vincoli del filtro sul set di valori consentito in una colonna o una tabella utilizzando gli argomenti di una formula. Il contesto di filtro viene applicato ad altri contesti, ad esempio il contesto di riga o il contesto di query.

Ad esempio una tabella pivot calcola i valori per ogni cella in base a intestazioni di riga e colonna, come descritto nella sezione precedente nel contesto di query. Tuttavia, all'interno di misure o le colonne calcolate aggiunti alla tabella pivot, è possibile specificare le espressioni di filtro per controllare i valori che vengono usati dalla formula. È possibile cancellare in modo selettivo i filtri nelle colonne specifiche.

Per ulteriori informazioni sulla creazione di filtri all'interno delle formule, vedere Funzioni filtro (DAX).

Per un esempio sulla deselezione dei filtri per creare totali complessivi, vedere Funzione ALL.

Per esempi sulla deselezione e sull'applicazione selettive di filtri all'interno delle formule, vedere Funzione ALLEXCEPT.

Di conseguenza, è necessario esaminare la definizione di misure o le formule utilizzate in una tabella pivot, in modo che siano a conoscenza contesto di filtro per interpretare i risultati delle formule.

Torna all'inizio

Determinazione del contesto nelle formule

Quando si crea una formula, PowerPivot per Excel verifica innanzitutto la sintassi generale, quindi controlla i nomi delle colonne e delle tabelle forniti in base alle possibili colonne e tabelle del contesto corrente. Se PowerPivot non riesce a individuare le colonne e le tabelle specificate dalla formula, verrà visualizzato un messaggio di errore.

Il contesto viene determinato come descritto nelle sezioni precedenti, utilizzando le tabelle disponibili nella cartella di lavoro, eventuali relazioni tra le tabelle ed eventuali filtri applicati.

Se ad esempio sono appena stati importati dati in una nuova tabella e non è stato applicato alcun filtro, tutto il set di colonne della tabella fa parte del contesto corrente. Se più tabelle sono collegate da relazioni e si utilizza una tabella pivot filtrata aggiungendo intestazioni di colonna e utilizzando filtri dei dati, il contesto include le tabelle correlate ed eventuali filtri sui dati.

Quello di contesto è un concetto articolato e complesso, che può rendere difficile risolvere i problemi relativi alle formule. Si consiglia di iniziare con formule e relazioni semplici per comprendere il funzionamento del contesto, sperimentando quindi l'utilizzo di formule semplici nelle tabelle pivot. Nella sezione seguente vengono forniti anche alcuni esempi del modo in cui le formule utilizzano tipi diversi di contesto per restituire risultati in modo dinamico.

Esempi di contesto nelle formule

  • La funzione RELATED espande il contesto della riga corrente per includere i valori di una colonna correlata. Ciò consente di eseguire ricerche. Nell'esempio di questo argomento viene illustrata l'interazione del contesto di filtro e del contesto di riga.

  • La funzione FILTER consente di specificare le righe da includere nel contesto corrente. Negli esempi di questo argomento viene inoltre illustrato come incorporare filtri in altre funzioni che eseguono aggregazioni.

  • La funzione ALL imposta il contesto all'interno di una formula. È possibile utilizzarla per eseguire l'override dei filtri applicati come risultato del contesto di query.

  • La funzione ALLEXCEPT consente di rimuovere tutti i filtri, ad eccezione di quello specificato. In entrambi gli argomenti sono inclusi esempi che illustrano la compilazione di formule e forniscono informazioni sui contesti complessi.

  • Le funzioni EARLIER e EARLIEST consentono di eseguire il ciclo in tabelle mediante l'esecuzione di calcoli, facendo riferimento nel contempo a un valore proveniente da un ciclo interno. Se si ha familiarità con il concetto di ricorsione e con i cicli interni ed esterni, sarà più facile apprezzare l'efficacia offerta dalle funzioni EARLIER ed EARLIEST. Se non si ha familiarità con questi concetti, è consigliabile attenersi scrupolosamente ai passaggi dell'esempio per informazioni sulla modalità di utilizzo dei contesti interni ed esterni nell'esecuzione di calcoli.

Torna all'inizio

Integrità referenziale

In questa sezione vengono illustrati alcuni concetti relativi ai valori mancanti nelle tabelle di PowerPivot connesse da una relazione. Questa sezione può risultare utile se sono presenti cartelle di lavoro con più tabelle e formule complesse e si vuole un supporto per l'interpretazione dei risultati.

Se non si ha familiarità con i concetti di dati relazionali, è consigliabile leggere innanzitutto l'argomento introduttivo Panoramica sulle relazioni.

Integrità referenziale e relazioni PowerPivot

PowerPivot non richiede l'applicazione dell'integrità referenziale tra due tabelle per definire una relazione valida. Viene invece creata una riga vuota sul lato "uno" di ogni relazione uno-a-molti usata per gestire tutte le righe della tabella correlata per cui non viene trovata alcuna corrispondenza. con un comportamento efficace analogo a quello di un outer join SQL.

Nelle tabelle pivot se si raggruppano i dati in base al lato uno della relazione, i dati senza corrispondenza sul lato molti della relazione vengono raggruppati insieme e verranno inclusi nei totali con un'intestazione di riga vuota. L'intestazione vuota è approssimativamente equivalente al "membro sconosciuto".

Informazioni sul membro sconosciuto

Il concetto di membro sconosciuto è probabilmente familiare se si sono utilizzati sistemi di database multidimensionali, ad esempio SQL Server Analysis Services. In caso contrario, nell'esempio seguente vengono illustrati il membro sconosciuto e la modalità con la quale tale membro influisce sui calcoli.

Si supponga di che crea un calcolo che somma mensile delle vendite per ogni punto vendita, ma una colonna nella tabella Sales non è un valore per il nome dell'archivio. Dato che le tabelle per archiviare e vendite sono connessi tramite il nome dell'archivio, che cosa si aspetta verificarsi nella formula? Come deve della tabella pivot di gruppo o visualizzare i dati sulle vendite non correlati a un archivio esistente?

Si tratta di un problema comune dei data warehouse, in cui le tabelle di dati dei fatti di grandi dimensioni devono essere correlate logicamente alle tabelle delle dimensioni contenenti informazioni sui negozi, sulle aree e sugli altri attributi utilizzati per suddividere e calcolare i fatti. Per risolvere il problema, qualsiasi nuovo fatto non correlato a un'entità esistente viene assegnato temporaneamente al membro sconosciuto. Questo è il motivo per cui fatti non correlati verranno visualizzati raggruppati in una tabella pivot sotto un'intestazione vuota.

Modalità di gestione dei valori vuoti rispetto alla riga vuota

I valori vuoti sono diversi dalle righe vuote aggiunte per contenere il membro sconosciuto. Il valore vuoto è un valore speciale utilizzato per rappresentare valori Null, stringhe vuote e altri valori mancanti. Per ulteriori informazioni sul valore vuoto, nonché sui tipi di dati DAX, vedere Tipi di dati supportati nei modelli di dati.

Torna all'inizio

Nota : Dichiarazione di non responsabilità per la traduzione automatica: Il presente articolo è stato tradotto tramite un software di traduzione automatica e non da una persona. Microsoft offre le traduzioni automatiche per consentire a coloro che non conoscono la lingua inglese di leggere gli articoli sui prodotti, sui servizi e sulle tecnologie Microsoft. Dal momento che l'articolo è stato tradotto automaticamente, potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli.

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa al programma Office Insider

Queste informazioni sono risultate utili?

Grazie per i tuoi commenti e suggerimenti

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×