Usare le funzioni iteratore di aggregazione

Completato

Ogni funzione di riepilogo a colonna singola ha la relativa funzione iteratore equivalente. Le sezioni seguenti prendono in considerazione due scenari di aggregazione in cui le funzioni iteratore sono utili: riepilogo complesso e riepilogo con granularità maggiore.

Riepilogo complesso

In questa sezione si creerà la prima misura che usa una funzione iteratore. Scaricare e aprire prima di tutto il file Adventure Works DW 2020 M05.pbix. Aggiungere quindi la definizione di misura seguente:

Revenue =
SUMX(
    Sales,
    Sales[Order Quantity] * Sales[Unit Price] * (1 - Sales[Unit Price Discount Pct])
)

Formattare la misura Revenue come valuta con due cifre decimali e quindi aggiungerla all'oggetto visivo tabella disponibile nella Pagina 1 del report.

Immagine che mostra un oggetto visivo tabella con due colonne: Month e Revenue. Vengono visualizzati i dati di un anno.

Usando una funzione iteratore, la formula della misura Revenue aggrega più valori di una singola colonna. Per ogni riga, usa i valori del contesto di riga di tre colonne per produrre l'importo dei ricavi.

Aggiungere ora un'altra misura:

Discount =
SUMX(
    Sales,
    Sales[Order Quantity]
    * (
        RELATED('Product'[List Price]) - Sales[Unit Price]
    )
)

Formattare la misura Discountcome valuta con due cifre decimali e quindi aggiungerla all'oggetto visivo tabella.

Immagine che mostra un oggetto visivo tabella con tre colonne: Month, Revenue e Discount. Vengono visualizzati i dati di un anno.

Si noti che la formula usa la funzione RELATED. Si noti che il contesto di riga non si estende oltre la tabella. Se la formula deve fare riferimento a colonne di altre tabelle e sono presenti relazioni di modello tra le tabelle, usare la funzione RELATED per la relazione unilaterale o la funzione RELATEDTABLE per la relazione multilaterale.

Riepilogo con granularità maggiore

Nell'esempio seguente viene considerato un requisito per generare report sui ricavi medi. Aggiungere la misura seguente:

Revenue Avg =
AVERAGEX(
    Sales,
    Sales[Order Quantity] * Sales[Unit Price] * (1 - Sales[Unit Price Discount Pct])
)

Formattare la misura Revenue Avg come valuta con due cifre decimali e quindi aggiungerla all'oggetto visivo tabella.

Immagine che mostra un oggetto visivo tabella con quattro colonne: Month, Revenue, Discount e Revenue Avg. Vengono visualizzati i dati di un anno.

Si consideri che per media si intende la somma dei valori divisa per il numero di valori. Tuttavia, questa teoria pone una domanda: Che cosa rappresenta il numero di valori? In questo caso, il numero di valori è il numero di espressioni che non hanno restituito BLANK. Inoltre, poiché la funzione iteratore enumera le righe della tabella Sales, per media si intenderanno i ricavi per riga. Facendo un ulteriore passo avanti in questa logica, poiché ogni riga della tabella Sales registra una riga d'ordine di vendita, può essere descritta più precisamente come ricavi per riga d'ordine.

Di conseguenza, è necessario rinominare la misura Revenue Avg come Revenue Avg Order Line in modo che sia chiaro segnalare agli utenti ciò che viene usato come base media.

Nell'esempio seguente viene usata una funzione iteratore per creare una nuova misura che eleva la granularità al livello di ordine di vendita (un ordine di vendita è costituito da una o più righe d'ordine). Aggiungere la misura seguente:

Revenue Avg Order =
AVERAGEX(
    VALUES('Sales Order'[Sales Order]),
    [Revenue]
)

Formattare la misura Revenue Avg Order come valuta con due cifre decimali e quindi aggiungerla all'oggetto visivo tabella.

Immagine che mostra un oggetto visivo tabella con cinque colonne: Month, Revenue, Discount, Revenue Avg Order Line e Revenue Avg Order. Vengono visualizzati i dati di un anno.

Come previsto, i ricavi medi per un ordine sono sempre superiori ai ricavi medi per una singola riga d'ordine.

Si noti che la formula usa la funzione DAX VALUES. Questa funzione consente alle formule di determinare i valori che si trovano nel contesto di filtro. In questo caso, la funzione AVERAGEX esegue l'iterazione su ogni ordine di vendita nel contesto di filtro. In altre parole, esegue l'iterazione su ogni ordine di vendita del mese. Il contesto di filtro e la funzione VALUES verranno introdotti nel modulo del contesto di filtro.