Introduzione

Completato

È possibile scrivere una formula DAX (Data Analysis Expression) per aggiungere una tabella calcolata al modello. La formula può duplicare o trasformare i dati esistenti del modello per produrre una nuova tabella.

Nota

Una tabella calcolata non può connettersi a dati esterni. Per eseguire questa attività, è necessario usare Power Query.

Una formula della tabella calcolata deve restituire un oggetto tabella. La formula più semplice può duplicare una tabella del modello esistente.

Le tabelle calcolate presentano un costo: Aumentano le dimensioni di archiviazione del modello e possono prolungare il tempo di aggiornamento dei dati. Il motivo è che le tabelle calcolate vengono ricalcolate quando sono presenti dipendenze delle formule verso le tabelle aggiornate.

Duplicare una tabella

Nella sezione seguente viene descritta una sfida di progettazione comune che può essere risolta creando una tabella calcolata. Per prima cosa, è necessario scaricare e aprire il file Adventure Works DW 2020 M03.pbix e quindi passare al diagramma del modello.

Si noti che, nel diagramma del modello, la tabella Sales presenta tre relazioni con la tabella Date.

Il diagramma del modello mostra tre relazioni perché la tabella Vendite archivia i dati relativi alle vendite in base alla data dell'ordine, alla data di spedizione e alla data di scadenza. Esaminando le colonne OrderDateKey, ShipDateKeye DueDateKey, si nota che una relazione è rappresentata da una linea continua, ovvero la relazione attiva. Le altre relazioni, rappresentate da linee tratteggiate, sono relazioni inattive.

Nota

Tra due tabelle del modello può esistere una sola relazione attiva.

Nel diagramma passare il puntatore del mouse sulla relazione attiva per evidenziare le colonne correlate, ovvero la modalità di interazione con il diagramma del modello per ottenere informazioni sulle colonne correlate. In questo caso la relazione attiva filtra la colonna OrderDateKey nella tabella Sales. I filtri applicati alla tabella Date verranno quindi propagati alla tabella Sales per filtrare in base alla data dell'ordine. Non verranno mai applicati filtri in base alla data di spedizione o alla data di scadenza.

Il passaggio successivo consiste nell'eliminare le due relazioni inattive tra la tabella Date e la tabella Sales. Per eliminare una relazione, fare clic con il pulsante destro del mouse e quindi selezionare Elimina dal menu di scelta rapida. Assicurarsi di eliminare entrambe le relazioni inattive.

Successivamente, aggiungere una nuova tabella per consentire agli utenti del report di filtrare le vendite in base alla data di spedizione. Passare alla visualizzazione Report, quindi nella scheda della barra multifunzione Modellazione, all'interno del gruppo Calcoli, selezionare Nuova tabella.

Nella barra della formula (sotto la barra multifunzione) immettere la definizione della tabella calcolata seguente e quindi premere INVIO.

Ship Date = 'Date'

La definizione della tabella calcolata duplica i dati della tabella Date per generare una nuova tabella denominata Ship Date. La tabella Ship Date include esattamente le stesse colonne e righe della tabella Date. Quando si aggiornano i dati della tabella Date, la tabella Ship Date viene ricalcolata in modo che i dati siano sempre sincronizzati.

Passare al diagramma del modello, quindi osservare che è stata aggiunta la tabella Ship Date.

Successivamente, creare una relazione tra la colonna DateKey nella tabella Ship Date e la colonna ShipDateKey nella tabella Sales. È possibile creare la relazione trascinando la colonna DateKey della tabella Ship Date nella colonna ShipDateKey della tabella Sales.

Una tabella calcolata duplica solo i dati, non gli oggetti o le proprietà del modello, come le gerarchie o la visibilità delle colonne. Per la nuova tabella tali elementi dovranno essere impostati, se necessario.

Suggerimento

È possibile rinominare le colonne di una tabella calcolata. In questo esempio è consigliabile rinominare le colonne in modo che ne descrivano meglio lo scopo. Ad esempio, la colonna Fiscal Year nella tabella Ship Date può essere rinominata come Ship Fiscal Year. Di conseguenza, quando negli oggetti visivi vengono usati i campi della tabella Ship Date, i relativi nomi vengono inclusi automaticamente in sottotitoli, come il titolo visivo o le etichette dell'asse.

Per completare la progettazione della tabella Ship Date, è possibile:

  • Rinominare le colonne seguenti:
    • Data come Data di spedizione
    • Anno fiscale come Anno fiscale di spedizione
    • Trimestre fiscale come Trimestre fiscale di spedizione
    • Mese come Mese di spedizione
    • Data completa come Data completa di spedizione
  • Ordinare la colonna Data completa di spedizione in base alla colonna Data di spedizione.
  • Ordinare la colonna Mese di spedizione in base alla colonna MonthKey.
  • Nascondere la colonna MonthKey.
  • Creare una gerarchia denominata Fiscale con i tre livelli seguenti:
    • Anno fiscale di spedizione
    • Trimestre fiscale di spedizione
    • Mese di spedizione
    • Data completa di spedizione
  • Contrassegnare la tabella Data di spedizione come tabella data usando la colonna Data di spedizione.

Le tabelle calcolate sono utili per lavorare negli scenari in cui sono presenti più relazioni tra due tabelle, come descritto in precedenza. Possono inoltre essere usate per aggiungere una tabella data al modello. Le tabelle data sono necessarie per applicare speciali filtri temporali noti come funzionalità di Business Intelligence per le gerarchie temporali.

Creare una tabella di date

Nell'esempio seguente viene creata una seconda tabella calcolata, questa volta usando la funzione DAX CALENDARAUTO.

Creare la tabella calcolata Due Date usando la definizione seguente.

Due Date = CALENDARAUTO(6)

La funzione DAX CALENDARAUTO accetta un solo argomento facoltativo, corrispondente al numero che indica l'ultimo mese dell'anno e restituisce una tabella con colonna singola. Se non viene trasmesso un numero corrispondente a un mese, si presuppone che sia 12 (cioè dicembre). Ad esempio, l'anno fiscale di Adventure Works termina il 30 giugno di ogni anno, quindi viene trasmesso il valore 6 (cioè giugno).

La funzione analizza tutte le colonne di data e data/ora nel modello per determinare i valori più e meno recenti archiviati relativi alla data. Viene quindi generato un set completo di date che si estende a tutte le date del modello, assicurando che vengano caricati gli anni completi di date. Se, ad esempio, la data meno recente archiviata nel modello è il 15 ottobre 2021, la prima data restituita dalla funzione CALENDARAUTO sarà il 1° luglio 2021. Se la data più recente archiviata nel modello è il 15 giugno 2022, l'ultima data restituita dalla funzione CALENDARAUTO sarà il 30 giugno 2022.

In realtà, la funzione CALENDARAUTO garantisce che siano soddisfatti i requisiti seguenti per contrassegnare una tabella data:

  • La tabella deve includere una colonna con tipo di dati Data.
  • La colonna deve contenere anni completi.
  • La colonna non deve contenere date mancanti.

Suggerimento

È anche possibile creare una tabella di date usando la CALENDAR e passando due valori di data, che rappresentano l'intervallo di date. La funzione genera una riga per ogni data compresa nell'intervallo. È possibile trasmettere valori di data statici o espressioni che recuperano le date più e meno recenti da colonne specifiche del modello.

Passare alla visualizzazione dati, quindi nel riquadro Campi selezionare la tabella Due Date. A questo punto, esaminare la colonna di date. Potrebbe essere necessario ordinarle in modo da visualizzare la data meno recente nella prima riga selezionando la freccia all'interno dell'intestazione della colonna Data e quindi ordinando in ordine crescente.

Nota

L'ordinamento delle colonne o l'applicazione di filtri non cambia il modo in cui vengono archiviati i valori. Queste funzioni consentono di esplorare e comprendere i dati.

Ora che è stata selezionata la colonna Data, esaminare il messaggio nella barra di stato (nell'angolo inferiore sinistro). Viene descritto il numero di righe archiviate nella tabella e il numero di valori distinti presenti nella colonna selezionata.

Quando le righe e i valori distinti della tabella sono uguali, significa che la colonna contiene valori univoci. Questo fattore è importante per due motivi: Soddisfa i requisiti per contrassegnare una tabella data e consente che questa colonna venga usata in una relazione di modello su un lato.

La tabella calcolata Due Date viene ricalcolata ogni volta che viene aggiornata una tabella contenente una colonna data. In altre parole, quando una riga viene caricata nella tabella Sales con una data di ordine pari al 1° luglio 2022, la tabella Due Date estende automaticamente le date in modo da includere date fino alla fine dell'anno successivo: il 30 giugno 2023.

La tabella Due Date richiede altre colonne per supportare i requisiti noti di filtro e raggruppamento, in particolare per anno, trimestre e mese.