Contesto nelle formule DAX

Il contesto consente di eseguire analisi dinamiche, in cui i risultati di una formula possono essere modificati in modo che corrispondano alla riga o alla selezione della cella corrente e anche a tutti i dati correlati. La comprensione del contesto e l'uso di context in modo efficace sono molto importanti per la creazione di formule performanti, analisi dinamiche e per la risoluzione dei problemi relativi alle formule.

Questa sezione definisce i diversi tipi di contesto: contesto di riga, contesto di query e contesto di filtro. Viene illustrato il modo in cui il contesto viene valutato per le formule nelle colonne calcolate e nelle tabelle pivot.

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

Informazioni sul contesto

Le formule in Power Pivot possono essere interessate dai filtri applicati in una tabella pivot, dalle relazioni tra tabelle e dai filtri usati nelle formule. Il contesto rende possibile l'esecuzione di analisi dinamiche. La comprensione del contesto è importante per la creazione e per la risoluzione dei problemi.

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 della riga è costituito dai valori di ogni singola riga e valori nelle colonne correlate alla riga corrente. Esistono anche alcune funzioni (prima e prima ) che ottengono un valore dalla riga corrente e quindiusano tale valore durante l'esecuzione di un'operazione su un'intera tabella.

Il contesto della query si riferisce al sottoinsieme di dati creato in modo implicito per ogni cella in una tabella pivot, a seconda delle 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.

Inizio pagina

Contesto di riga

Se si crea una formula in una colonna calcolata, il contesto di riga per la formula include i valori di tutte le colonne della riga corrente. Se la tabella è correlata a un'altra tabella, il contenuto include anche tutti i valori dell'altra tabella correlata alla riga corrente.

Supponiamo ad esempio di creare una colonna calcolata, = [Freight] + [Tax],

, che aggiunge insieme due colonne della stessa tabella. Questa formula si comporta come formule in una tabella di Excel, che fanno automaticamente riferimento ai valori della stessa riga. Si noti che le tabelle sono diverse dagli intervalli: non è possibile fare riferimento a un valore della riga prima della riga corrente usando la notazione dell'intervallo e non è possibile fare riferimento a un singolo valore arbitrario in una tabella o una cella. È sempre necessario usare le tabelle e le colonne.

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

Ad esempio, la formula seguente usa la funzione CORRELAta per recuperare un valore fiscale da una tabella correlata, in base all'area geografica in cui è stato inviato l'ordine. Il valore fiscale viene determinato usando il valore per Region nella tabella corrente, cercando l'area geografica nella tabella correlata e ottenendo quindi l'aliquota di imposta per tale area dalla tabella correlata.

= [Trasporto] + CORRELAto (' Area ' [Aliquotad'Imposta])

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

Contesto di più righe

Inoltre, DAX include funzioni che iterano i calcoli su una tabella. Queste funzioni possono avere più righe correnti e contesti di riga correnti. In termini di programmazione è possibile creare formule che rimandano a un loop interno ed esterno.

Supponiamo ad esempio che la cartella di lavoro contenga una tabella Products e una tabella Sales . Potrebbe essere utile passare all'intera tabella Sales, che è piena di transazioni che coinvolgono più prodotti e trovare la quantità più grande ordinata per ogni prodotto in una transazione.

In Excel questo calcolo richiede una serie di riepiloghi intermedi, che devono essere ricompilati se i dati sono cambiati. Se si è un utente di Excel, è possibile creare formule in forma di matrice che farebbero il lavoro. In alternativa, in un database relazionale è possibile scrivere sottoselezioni annidate.

Con DAX, tuttavia, è possibile creare una singola formula che restituisce il valore corretto e i risultati vengono aggiornati automaticamente ogni volta che si aggiungono dati alle tabelle.

= MAXX (FILTER (Sales, [ProdKey] = prima ([ProdKey])), Sales [OrderQty])

Per una procedura dettagliata della formula, vedere la versione precedente.

In breve, la funzione precedente archivia il contesto di riga dall'operazione che ha preceduto l'operazione corrente. In ogni caso, la funzione archivia in memoria due insiemi di contesto: un set di contesto rappresenta la riga corrente per il ciclo interno della formula e un altro set di contesto rappresenta la riga corrente per il ciclo esterno della formula. DAX alimenta automaticamente i valori tra i due cicli in modo che sia possibile creare aggregazioni complesse.

Inizio pagina

Contesto della query

Il contesto della query fa riferimento al sottoinsieme di dati che vengono recuperati in modo implicito per una formula. Quando si rilascia un campo di misura o un altro valore in una cella di una tabella pivot, il motore di Power Pivot esamina le intestazioni di riga e di colonna, i filtri dei dati e il report per determinare il contesto. Power Pivot, quindi, esegue i calcoli necessari per popolare ogni cella della tabella pivot. Il set di dati recuperati è il contesto della query per ogni cella.

Poiché il contesto può cambiare a seconda della posizione in cui si inserisce la formula, anche i risultati della formula cambiano a seconda che si usi la formula in una tabella pivot con molti raggruppamenti e filtri oppure in una colonna calcolata senza filtri e con un contesto minimo.

Supponiamo, ad esempio, di creare questa semplice formula che somma i valori nella colonna profit della tabella Sales : = Sum (' Sales ' [profit]).

Se si usa questa formula in una colonna calcolata all'interno della tabella Sales , i risultati della formula saranno uguali per l'intera tabella, perché il contesto di query per la formula è sempre l'intero set di dati della tabella Sales . I risultati avranno profitto per tutte le aree geografiche, tutti i prodotti, tutti gli anni e così via.

Tuttavia, in genere non si vuole vedere lo stesso risultato centinaia di volte, ma si vuole ottenere il profitto per un determinato anno, un determinato paese o area geografica, un determinato prodotto o una combinazione di questi e quindi ottenere un totale complessivo.

In una tabella pivot è facile cambiare il contesto aggiungendo o rimuovendo intestazioni di colonna e di riga e aggiungendo o rimuovendo filtri dei dati. È possibile creare una formula come quella sopra, in una misura, e quindi rilasciarla in una tabella pivot. Ogni volta che si aggiungono intestazioni di colonna o di riga alla tabella pivot, si modifica il contesto della query in cui viene valutata la misura. Le operazioni di affettatura e filtro incidono anche sul contesto. La stessa formula usata in una tabella pivot viene quindi valutata in un contesto di query diverso per ogni cella.

Inizio pagina

Contesto di filtro

Il contesto di filtro viene aggiunto quando si specificano vincoli di filtro per il set di valori consentiti in una colonna o una tabella, usando gli argomenti di una formula. Il contesto di filtro si applica all'inizio di altri contesti, ad esempio contesto di riga o contesto di query.

Ad esempio, una tabella pivot calcola i valori per ogni cella in base alle intestazioni di riga e di colonna, come descritto nella sezione precedente del contesto della query. Tuttavia, all'interno delle misure o delle colonne calcolate che si aggiungono alla tabella pivot, è possibile specificare le espressioni di filtro per controllare i valori usati dalla formula. È anche possibile deselezionare i filtri in modo selettivo in determinate colonne.

Per altre informazioni su come creare filtri all'interno delle formule, vedere le funzioni di filtro.

Per un esempio di come i filtri possono essere deselezionati per creare totali complessivi, vedere tutti.

Per esempi su come deselezionare e applicare i filtri in modo selettivo all'interno delle formule, vedere la funzione ALLEXCEPT.

Di conseguenza, è necessario rivedere la definizione di misure o formule usate in una tabella pivot in modo da tenere presente il contesto di filtro durante l'interpretazione dei risultati delle formule.

Inizio pagina

Determinazione del contesto nelle formule

Quando si crea una formula, Power Pivot per Excel controlla prima di tutto la sintassi generale e quindi controlla i nomi delle colonne e delle tabelle fornite in base alle possibili colonne e tabelle nel contesto corrente. Se Power Pivot non riesce a trovare le colonne e le tabelle specificate dalla formula, viene visualizzato un messaggio di errore.

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

Se ad esempio sono stati appena importati alcuni dati in una nuova tabella e non sono stati applicati filtri, l'intero set di colonne della tabella fa parte del contesto corrente. Se sono presenti più tabelle collegate da relazioni e si lavora in una tabella pivot filtrata con l'aggiunta di intestazioni di colonna e l'uso dei filtri dei dati, il contesto include le tabelle correlate e qualsiasi filtro per l'utente.

Context è un concetto potente che può anche rendere difficile la risoluzione dei problemi relativi alle formule. È consigliabile iniziare con semplici formule e relazioni per vedere come funziona il contesto e quindi iniziare a sperimentare con formule semplici nelle tabelle pivot. La sezione seguente contiene anche alcuni esempi di come le formule usano diversi tipi di contesto per restituire dinamicamente i risultati.

Esempi di contesto nelle formule

  • La funzione CORRELAta espande il contesto della riga corrente per includere i valori in una colonna correlata. Questo consente di eseguire ricerche. L'esempio in questo argomento illustra l'interazione tra il filtro e il contesto di riga.

  • La funzione FILTER consente di specificare le righe da includere nel contesto corrente. Gli esempi in questo argomento illustrano anche come incorporare filtri in altre funzioni che eseguono aggregazioni.

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

  • La funzione ALLEXCEPT consente di rimuovere tutti i filtri tranne uno specificato. Entrambi gli argomenti includono esempi che illustrano come creare formule e comprendere contesti complessi.

  • Le funzioni precedenti e quelle meno recenti consentono di scorrere le tabelle eseguendo i calcoli e facendo riferimento a un valore da un ciclo interno. Se si ha familiarità con il concetto di ricorsione e con i loop interni ed esterni, si apprezzerà la potenza che offrono le funzioni prima e prima. Se si è nuovi a questi concetti, seguire attentamente i passaggi descritti nell'esempio per vedere come vengono usati i contesti interni ed esterni nei calcoli.

Inizio pagina

Integrità referenziale

In questa sezione vengono illustrati alcuni concetti avanzati relativi ai valori mancanti in Power Pivot tabelle connesse da relazioni. Questa sezione potrebbe essere utile se si hanno cartelle di lavoro con più tabelle e formule complesse e si vuole ottenere assistenza per la comprensione dei risultati.

Se si è nuovi concetti relativi ai dati relazionali, è consigliabile leggere prima di tutto l'argomento introduttivo, Panoramica delle relazioni.

Integrità referenziale e relazioni Power Pivot

Power Pivot non richiede l'applicazione dell'integrità referenziale tra due tabelle per definire una relazione valida. Viene invece creata una riga vuota nella fine "uno" di ogni relazione uno-a-molti e viene usata per gestire tutte le righe non corrispondenti della tabella correlata. Si comporta in modo efficace come outer join SQL.

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

Informazioni sul membro sconosciuto

Il concetto del membro sconosciuto è probabilmente noto se si è lavorato con sistemi di database multidimensionali, ad esempio SQL Server Analysis Services. Se il termine è nuovo per l'utente, l'esempio seguente illustra il significato del membro sconosciuto e il modo in cui influenza i calcoli.

Supponiamo di creare un calcolo che importi le vendite mensili per ogni archivio, ma una colonna nella tabella Sales manca un valore per il nome dello Store. Poiché le tabelle per lo Store e le vendite sono connesse tramite il nome dello Store, cosa si aspetterebbe che si verifichi nella formula? In che modo il gruppo di tabella pivot può visualizzare le cifre di vendita che non sono correlate a uno Store esistente?

Questo problema è quello comune nei data warehouse, in cui le tabelle di grandi dimensioni dei dati sui fatti devono essere correlate logicamente alle tabelle delle dimensioni che contengono informazioni su negozi, aree geografiche e altri attributi usati per categorizzare e calcolare i fatti. Per risolvere il problema, gli eventuali nuovi elementi non correlati a un'entità esistente vengono temporaneamente assegnati al membro sconosciuto. Ecco perché i fatti non correlati verranno visualizzati raggruppati in una tabella pivot sotto un'intestazione vuota.

Trattamento dei valori vuoti rispetto alla riga vuota

I valori vuoti sono diversi dalle righe vuote aggiunte per ospitare il membro sconosciuto. Il valore blank è un valore speciale che viene usato per rappresentare valori null, stringhe vuote e altri tipi mancanti. Per altre informazioni sul valore blank, oltre ad altri tipi di dati DAX, vedere tipi di dati nei modelli di dati.

Inizio pagina

Serve aiuto?

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

Queste informazioni sono risultate utili?

Grazie per il feedback!

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

×