Funzionamento delle espressioni di livello a dettaglio in Tableau

Questo articolo illustra il modo in cui vengono calcolate e gestite in Tableau le espressioni a livello di dettaglio. Per maggiori informazioni sulle espressioni LOD e su come funzionano, consulta white paper relativo alle espressioni a livello di dettaglio (LOD)(Il collegamento viene aperto in una nuova finestra) sul sito Web di Tableau.

Espressioni a livello di riga e espressioni a livello di vista

In Tableau, le espressioni che fanno riferimento a colonne di origini dati non aggregati vengono calcolate per ogni riga della tabella sottostante. In questo caso, la dimensionalità dell’espressione è a livello di riga. Un esempio di espressione a livello di riga è:

[Sales] / [Profit]

Questo calcolo verrà valutato in ogni riga del database. Per ogni riga, il valore Vendita in quella riga sarà diviso per il valore Profitto in quella riga, producendo una nuova colonna con il risultato della moltiplicazione (rapporto di profitto).

Se crei un calcolo con questa definizione, salvalo con il nome [ProfitRatio], quindi trascinalo dal riquadro Dati su un ripiano, Tableau tipicamente aggrega il campo calcolato per la vista:

SUM([ProfitRatio])

Al contrario, le espressioni che fanno riferimento a colonne di origine dati aggregate vengono calcolate in base alla dimensionalità definita dalle dimensioni nella vista. In questo caso, la dimensionalità dell’espressione è a livello di vista. Un esempio di espressione a livello di vista è:

SUM(Sales) / SUM(Profit)

Se trascini questo calcolo su un ripiano (o lo digiti direttamente su un ripiano come un calcolo ad hoc), Tableau lo racchiude in una funzione AGG:

AGG(SOMMA(Vendite)/SOMMA(Profitto))

Questo è un calcolo aggregato. Per informazioni dettagliate, vedi Funzioni aggregate in Tableau(Il collegamento viene aperto in una nuova finestra).

Le dimensioni e i campi impostati inseriti in una delle posizioni evidenziate nella seguente immagine contribuiscono al livello di dettaglio della vista:

Prima che le espressioni a livello di dettaglio fossero supportate in Tableau, non era possibile creare calcoli a un livello di dettaglio diverso dal livello della vista. Ad esempio, se tentavi di salvare la seguente espressione, Tableau visualizzava il messaggio di errore: “Impossibile combinare argomenti aggregati e non aggregati con questa funzione”:

[Sales] – AVG([Sales])

L’intento dell’utente in questo caso era quello di confrontare le vendite dei negozi per ogni singolo negozio con la media delle vendite per tutti i negozi. Questo ora può essere realizzato con un’espressione a livello di dettaglio:

[Sales] - {AVG([Sales])}

Questa è un’espressione di livello di dettaglio a livello di tabella. Vedi Ambito tabella.

Limitazioni delle espressioni a livello di dettaglio

Le seguenti limitazioni si applicano alle espressioni a livello di dettaglio. Vedi anche Vincoli dell’origine dati per le espressioni Level of Detail.

  • Le espressioni a livello di dettaglio che fanno riferimento a misure con virgola mobile possono comportarsi in modo inaffidabile se utilizzate in una vista che richiede il confronto dei valori nell’espressione. Per maggiori dettagli, consulta Comprensione dei tipi di dati nei calcoli(Il collegamento viene aperto in una nuova finestra).

  • Le espressioni a livello di dettaglio non vengono visualizzate nella pagina Origine dati. Vedi Pagina Origine dati.

  • Quando fai riferimento a un parametro in una dichiarazione di dimensionalità, utilizza sempre il nome del parametro e non il valore.

  • Con l’unione dei dati, il campo di collegamento dall’origine dati primaria deve essere incluso nella vista prima di poter usare un’espressione a livello di dettaglio dall’origine dati secondaria. Vedi Risoluzione dei problemi dell’unione dei dati.

Inoltre, alcune origini dati presentano limiti di complessità. Tableau non disabilita i calcoli per questi database, ma gli errori di query diventano possibili se i calcoli diventano troppo complessi.

Le espressioni a livello di dettaglio possono essere dimensioni o misure

Quando salvi un’espressione a livello di dettaglio, Tableau la aggiunge all’area Dimensioni o Misure nel riquadro Dati.

Le espressioni a livello di dettaglio FIXED possono dare origine a misure o dimensioni, a seconda del campo sottostante nell’espressione di aggregazione. Quindi MIN([Data])} sarà una dimensione perché [Data] è una dimensione e {fixed Negozio:SOMMA([Vendite])} sarà una misura perché [Vendite] è una misura. Quando un’espressione a livello di dettaglio FIXED viene salvata come misura, puoi spostarla nelle dimensioni.

Le espressioni a livello di dettaglio INCLUDE ed EXCLUDE sono sempre misure.

Filtri ed espressioni Level of Detail

In Tableau sono presenti diversi tipi di filtri che vengono eseguiti nel seguente ordine dall’alto verso il basso.

Il testo sulla destra mostra dove vengono valutate le espressioni Level of Detail in questa sequenza.

I filtri di estrazione (in arancione) sono rilevanti solo se stai creando un’estrazione di Tableau da un’origine dati. I filtri di calcolo delle tabelle (blu scuro) vengono applicati dopo l’esecuzione dei calcoli e quindi nascondono gli indicatori senza filtrare i dati sottostanti utilizzati nei calcoli.

Se conosci SQL, puoi pensare di misurare i filtri come equivalenti alla clausola HAVING in una query, e i filtri di dimensione come equivalenti alla clausola WHERE.

I calcoli FIXED vengono applicati prima dei filtri dimensionali, quindi, a meno che non si promuovano i campi sullo spazio Filtri su Utilizzare i filtri contestuali, verranno ignorati. Ad esempio, considera di avere il seguente calcolo su uno spazio in una vista, insieme a [Stato] in uno spazio diverso:

SUM([Sales]) / ATTR({FIXED : SUM([Sales])})

Questo calcolo ti offrirà il rapporto delle vendite di uno stato e le vendite totali.

Se poi inserisci [Stato] sullo spazio Filtri per nascondere alcuni degli stati, il filtro influenzerà solo il numeratore nel calcolo. Poiché il denominatore è un’espressione Level of Detail FIXED, continuerà a dividere le vendite per gli stati ancora nella vista rispetto al totale delle vendite per tutti gli stati, compresi quelli che sono stati filtrati dalla vista.

Le espressioni Level of Detail INCLUDE ed EXCLUDE sono considerate dopo i filtri di Dimensione. Quindi, se vuoi che i filtri si applichino all’espressione Level of Detail FIXED ma non vuoi usare i Filtri di contesto, prendi in considerazione di riscriverli come espressioni INCLUDE o EXCLUDE.

Aggregazioni ed espressione a livello di dettaglio

Il livello di dettaglio della vista determina il numero di indicatori nella vista. Quando aggiungi un livello di dettaglio alla vista, Tableau deve conciliare due livelli di dettaglio: quello della vista e quello della tua espressione.

Il comportamento di un’espressione Level of Detail nella vista varia a seconda che il livello di dettaglio dell’espressione sia più o meno grossolano, più particolareggiato o uguale al livello di dettaglio nella vista. Cosa intendiamo per "più grossolano" o "più particolareggiato" in questo caso?

L’espressione Level of Detail è più grossolana del livello di dettaglio della vista

Un’espressione ha un livello di dettaglio più grossolano rispetto alla vista quando fa riferimento a un sottoinsieme delle dimensioni della vista. Ad esempio, per una vista che conteneva le dimensioni [Categoria] e [Segmento], puoi creare un’espressione Level of Detail che utilizza solo una di queste dimensioni:

{FIXED [Segment] : SUM([Sales])}

In questo caso, l’espressione ha un livello di dettaglio più grossolano rispetto alla vista. Basa i suoi valori su una dimensione ([Segmento]), mentre la vista si basa su due dimensioni ([Segmento] e [Categoria]).

Il risultato è che utilizzando l’espressione Level of Detail nella vista, alcuni valori vengono replicati, ovvero vengono visualizzati più volte.

I valori replicati sono utili per confrontare valori specifici con valori medi all’interno di una categoria. Ad esempio, il calcolo seguente sottrae le vendite medie di un cliente dalle vendite medie complessive:

[Sales] - {FIXED [Customer Name] : AVG([Sales])}

Quando i valori vengono replicati, la modifica dell’aggregazione per il campo pertinente nella vista (ad esempio, da AVG a SUM) non modificherà il risultato dell’aggregazione.

L’espressione Level of Detail è più delicata di Level of Detail della vista

Un’espressione ha un livello di dettaglio più particolareggiato rispetto alla vista quando fa riferimento a un sottoinsieme delle dimensioni nella vista. Quando utilizzi questa espressione nella vista, Tableau aggregherà i risultati fino al livello di vista. Ad esempio, il seguente livello di dettaglio dell’espressione si riferisce a due dimensioni:

{FIXED [Segment], [Category] : SUM([Sales])}

Quando utilizzi questa espressione in una vista che ha solo [Segmento] come livello di dettaglio, i valori devono essere aggregati. Ecco cosa vedresti se trascinassi quell’espressione su uno spazio:

AVG([{FIXED [Segment]], [Category]] : SUM([Sales]])}])

Un’aggregazione, in questo caso, media, viene assegnata automaticamente da Tableau. Puoi modificare l’aggregazione secondo necessità.

Aggiunta di un’espressione Level of Detail alla vista

Un’espressione Level of Detail è aggregata o replicata nella vista in base dal tipo di espressione (FIXED, INCLUDE, o EXCLUDE) e se la granularità dell’espressione è più grossolana o più delicata di quella della vista.

  • Le espressioni Level of Detail INCLUDE avranno lo stesso livello di dettaglio della vista o un livello di dettaglio più delicato rispetto alla vista. Pertanto, i valori non saranno mai replicati.

  • Le espressioni Level of Detail FIXED possono avere un livello di dettaglio più delicato rispetto alla vista, un livello di dettaglio più grossolano, o lo stesso livello di dettaglio. La necessità di aggregare i risultati di un livello di dettaglio FIXED dipende da quali dimensioni sono presenti nella vista.

  • Le espressioni Level of Detail EXCLUDE provocano sempre la comparsa di valori replicati nella vista. Quando i calcoli che includono le espressioni Level of Detail EXCLUDE sono posizionati su uno spazio, Tableau imposta l’aggregazione ATTR (al contrario di SUM o AVG) per indicare che l’espressione non viene effettivamente aggregata e che la modifica dell’aggregazione non avrà alcun effetto sulla vista.

Le espressioni Level of Detail sono sempre automaticamente integrate in un aggregazione quando vengono aggiunte a uno spazio nella vista, a meno che non vengano utilizzate come dimensioni. Perciò, se fai doppio clic su uno spazio e digiti

{FIXED[Segment], [Category] : SUM([Sales])}

e quindi premi Invio per inserire l’espressione, quello che vedrai sullo spazio sarà

SUM({FIXED[Segment], [Category] : SUM([Sales])})

Ma se fai doppio clic sullo spazio per modificare l’espressione, quello che vedrai nella modalità di modifica sarà l’espressione originale.

Se integri un’espressione Level of Detail in un’aggregazione al momento della sua creazione, Tableau utilizzerà l’aggregazione specificata anziché assegnarne una quando qualsiasi calcolo che includa tale espressione è posizionato su uno spazio. Quando non è necessaria alcuna aggregazione (poiché il livello di dettaglio dell’espressione è più grossolano di quello della vista), l’aggregazione specificata viene ancora mostrata quando l’espressione è su uno spazio, ma viene ignorata.

Vincoli dell’origine dati per le espressioni Level of Detail

Per alcune Origini dati, solo le versioni più recenti supportano le espressioni Level of Detail. Alcune Origini dati non supportano le espressioni Level of Detail.

Inoltre, alcune origini dati presentano limiti di complessità. Tableau non disabilita i calcoli per questi database, ma gli errori di query diventano possibili se i calcoli diventano troppo complessi.

Origine datiSupporto
Actian VectorwiseNon supportato.
Amazon EMR Hadoop HiveSupportato per Hive 0.13 e versioni successive.
Amazon RedshiftSupportato.
Aster DatabaseSupportato per la versione 4.5 e successive.
Cloudera HadoopSupportato per Hive 0.13 e versioni successive.
Cloudera ImpalaSupportato per Impala 1.2.2 e versioni successive.
Cubi (origini dati multidimensionali)Non supportato.
DataStax EnterpriseNon supportato.
EXASOLSupportato.
FirebirdSupportato per la versione 2.0 e successive.
Generic ODBCLimitato. In base all’origine dati specifica.
Google Big QuerySupportato per SQL standard, non supportato per SQL legacy.
Hortonworks Hadoop Hive

Supportato per Hive 0.13 e versioni successive.

Nella versione 1.1 delle espressioni Level of Detail HIVE che producono cross join non sono affidabili.

Il cross join si verifica quando non è presente un campo esplicito da unire. Ad esempio, per un’espressione Level of Detail {fixed [Product Type] : sum(sales)} quando la vista contiene solo una dimensione [Modalità di spedizione], Tableau crea un cross join. Un cross join produce righe che combinano ogni riga della prima tabella con ogni riga della seconda tabella.

IBM BigInsightsSupportato.
IBM DB2Supportato per la versione 8.1 e successive.
MarkLogicSupportato per la versione 7.0 e successive.
Microsoft AccessNon supportato.
Connessioni basate su Microsoft Jet (connettori legacy per Microsoft Excel, Microsoft Access e testo)Non supportato.
Microsoft SQL ServerSQL Server 2005 e versioni successive.
MySQLSupportato.
IBM PDA (Netezza)Supportato per la versione 7.0 e successive.
OracleSupportato per la versione 9i e successive.
Actian Matrix (ParAccel)Supportato per la versione 3.1 e successive.
Pivotal GreenplumSupportato per la versione 3.1 e successive.
PostgreSQLSupportato per la versione 7 e successive.
Progress OpenEdgeSupportato.
SAP HANASupportato.
SAP Sybase ASESupportato.
SAP Sybase IQSupportato per la versione 15.1 e successive.
Spark SQLSupportato.
SplunkNon supportato.
Estrazione dati TableauSupportato.
TeradataSupportato.
VerticaSupportato per la versione 6.1 e successive.

Vedi anche

Creare Espressioni Level of Detail in Tableau

Comprensione delle espressioni a livello di dettaglio (LOD)(Il collegamento viene aperto in una nuova finestra)

Grazie per il tuo feedback.Il tuo feedback è stato inviato. Grazie!