Il contesto consente di eseguire un'analisi dinamica, in cui i risultati di una formula possono cambiare in modo da riflettere la selezione corrente della riga o della cella e anche gli eventuali dati correlati. La comprensione del contesto e l'uso efficace del contesto sono molto importanti per la creazione di formule ad alte prestazioni, analisi dinamiche e per la risoluzione dei problemi nelle formule.

Questa sezione definisce i diversi tipi di contesto: contesto di riga, contesto di query e contesto di filtro. Spiega come viene valutato il contesto per le formule nelle colonne calcolate e nelle tabelle pivot.

L'ultima parte di questo articolo contiene collegamenti ad esempi dettagliati che illustrano come 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 è ciò che consente di eseguire analisi dinamiche. La comprensione del contesto è importante per la creazione e la risoluzione dei problemi relativi alle formule.

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

Il contesto di riga può essere pensato come "la riga corrente". Se è stata creata una colonna calcolata, il contesto di riga è costituito dai valori in ogni singola riga e dai valori nelle colonne correlate alla riga corrente. Esistono anche alcune funzioni (EARLIER e EARLIEST) che ottengono un valore dalla riga corrente e quindi lo usano durante l'esecuzione di un'operazione su un'intera tabella.

Il contesto della query fa riferimento al sottoinsieme di dati creato in modo implicito per ogni cella di una tabella pivot, a seconda delle intestazioni di riga e di colonna.

Contesto 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 riga

Se si crea una formula in una colonna calcolata, il contesto di riga per tale 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 correlati alla riga corrente.

Si supponga, ad esempio, di creare una colonna calcolata, =[Trasporto] + [Imposta],

, che somma due colonne della stessa tabella. Questa formula si comporta come le formule in una 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 precedente alla riga corrente usando la notazione di intervallo e non è possibile fare riferimento a un singolo valore arbitrario in una tabella o in una cella. È sempre necessario usare tabelle e colonne.

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

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

= [Spese di spedizione] + RELATED('Region'[TaxRate])

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

Contesto a 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 si ricorsi su un ciclo interno ed esterno.

Si supponga, ad esempio, che la cartella di lavoro contenga una tabella Prodotti e una tabella Vendite. È consigliabile scorrere l'intera tabella delle vendite, piena di transazioni che coinvolgono più prodotti, e trovare la quantità più grande ordinata per ogni prodotto in un'unica transazione.

In Excel questo calcolo richiede una serie di riepiloghi intermedi, che devono essere ricompilati in caso di modifica dei dati. Se si è un power user di Excel, potrebbe essere possibile creare formule di matrice in grado di eseguire il lavoro. In alternativa, in un database relazionale è possibile scrivere sottosezioni annidate.

Tuttavia, con DAX è 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(FILTRO(Vendite;[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])

Per una procedura dettagliata di questa formula, vedere la sezione PRECEDENTE.

In breve, la funzione EARLIER archivia il contesto di riga dell'operazione precedente all'operazione corrente. In ogni momento, la funzione archivia in memoria due set 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 da poter creare aggregazioni complesse.

Inizio pagina

Contesto della query

Il contesto della query fa riferimento al sottoinsieme di dati recuperati in modo implicito per una formula. Quando si rilascia una misura o un altro campo 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 i filtri dei dati per determinare il contesto. Quindi, Power Pivot 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 del punto in cui si posiziona la formula, i risultati della formula cambiano anche a seconda che si usi la formula in una tabella pivot con molti raggruppamenti e filtri oppure in una colonna calcolata senza filtri e contesto minimo.

Si supponga ad esempio di creare questa semplice formula che somma i valori nella colonna Profitto della tabella Vendite:=SOMMA('Vendite'[Profitto]).

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

Tuttavia, in genere non si vuole visualizzare 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, quindi ottenere un totale complessivo.

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

Inizio pagina

Contesto filtro

Il contesto del filtro viene aggiunto quando si specificano vincoli di filtro sul set di valori consentiti in una colonna o in una tabella, usando gli argomenti di una formula. Il contesto di filtro si applica oltre ad altri contesti, ad esempio il contesto di riga o 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 nel contesto della query. Tuttavia, all'interno delle misure o delle colonne calcolate che si aggiungono alla tabella pivot, è possibile specificare espressioni di filtro per controllare i valori usati dalla formula. È anche possibile cancellare in modo selettivo i filtri in determinate colonne.

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

Per un esempio di come è possibile cancellare i filtri per creare totali complessivi, vedere la sezione TUTTI.

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

Pertanto, è necessario esaminare la definizione di misure o formule usate in una tabella pivot in modo da essere a conoscenza del contesto del filtro durante l'interpretazione dei risultati delle formule.

Inizio pagina

Determinazione del contesto nelle formule

Quando si crea una formula, Power Pivot per Excel verifica prima di tutto la sintassi generale e quindi controlla i nomi delle colonne e delle tabelle fornite rispetto alle possibili colonne e tabelle nel contesto corrente. Se Power Pivot le colonne e le tabelle specificate dalla formula, verrà visualizzato un errore.

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

Ad esempio, se alcuni dati sono stati appena importati in una nuova tabella e non sono stati applicati filtri, l'intero set di colonne della tabella fa parte del contesto corrente. Se si hanno più tabelle collegate da relazioni e si sta lavorando in una tabella pivot filtrata aggiungendo intestazioni di colonna e usando filtri dei dati, il contesto include le tabelle correlate e gli eventuali filtri dei dati.

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

Esempi di contesto nelle formule

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

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

  • La funzione ALL imposta il contesto all'interno di una formula. È possibile usarlo per ignorare i filtri applicati come risultato del contesto della query.

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

  • Le funzioni EARLIER e EARLIEST consentono di scorrere le tabelle eseguendo calcoli, facendo riferimento a un valore da un ciclo interno. Se si ha familiarità con il concetto di ricorsione e con i cicli interni ed esterni, si apprezzerà la potenza delle funzioni EARLIER e EARLIEST. Se non si ha una nuova versione di questi concetti, è consigliabile seguire con attenzione i passaggi dell'esempio per vedere come vengono usati i contesti interni ed esterni nei calcoli.

Inizio pagina

Integrità referenziale

Questa sezione illustra alcuni concetti avanzati relativi ai valori mancanti nelle tabelle Power Pivot connesse da relazioni. Questa sezione può risultare utile se si hanno cartelle di lavoro con più tabelle e formule complesse e si vuole ottenere assistenza per comprendere i risultati.

Se non si hanno nuovi concetti relativi ai dati relazionali, è consigliabile leggere prima l'argomento introduttivo Panoramica sulle relazioni.

Integrità referenziale e relazioni Power Pivot referenziali

Power Pivot non richiede l'applicazione dell'integrità referenziale tra due tabelle per definire una relazione valida. Viene invece creata una riga vuota all'estremità "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 SQL outer join.

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 nei totali con un'intestazione di riga vuota. L'intestazione vuota equivale all'incirca al "membro sconosciuto".

Informazioni sul membro sconosciuto

Il concetto di membro sconosciuto è probabilmente familiare se si è lavorato con sistemi di database multidimensionali, ad esempio SQL Server Analysis Services. Se il termine non è nuovo, l'esempio seguente spiega qual è il membro sconosciuto e come influisce sui calcoli.

Si supponga di creare un calcolo che somma le vendite mensili per ogni negozio, ma in una colonna della tabella Vendite manca un valore per il nome del negozio. Dato che le tabelle per Store e Sales sono connesse dal nome del negozio, cosa ci si aspetta che accada nella formula? In che modo la tabella pivot deve raggruppare o visualizzare i dati sulle vendite non correlati a un negozio esistente?

Questo problema è comune nei data warehouse, in cui le tabelle dei dati dei fatti di grandi dimensioni devono essere correlate logicamente alle tabelle delle dimensioni che contengono informazioni su archivi, aree geografiche e altri attributi usati per la categorizzazione e il calcolo dei fatti. Per risolvere il problema, tutti i nuovi fatti 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.

Confronto tra i valori vuoti e la riga vuota

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

Inizio pagina

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Come valuti la qualità della traduzione?
Cosa ha influito sulla tua esperienza?

Grazie per il feedback!

×