Funzione HASONEVALUE (DAX)
Viene restituito TRUE quando il contesto per il parametro columnName è stato filtrato fino a un solo valore distinct. In caso contrario, è FALSE.
Sintassi
HASONEVALUE(<columnName>)
Parametri
- columnName
Nome di una colonna esistente tramite la sintassi DAX standard. Non può essere un'espressione.
Valore restituito
TRUE quando il contesto per il parametro columnName è stato filtrato fino a un solo valore distinct. In caso contrario, è FALSE.
Osservazioni
- Un'espressione equivalente per HASONEFILTER() è COUNTROWS(VALUES(<columnName>)) = 1
Esempio
Nell'esempio seguente si desidera creare una formula che consenta di verificare se il contesto viene sezionato in base a un valore, al fine di stimare una percentuale rispetto a uno scenario predefinito; in questo caso si desidera confrontare i risultati di Reseller Sales con le vendite nel 2007, quindi è necessario sapere se il contesto viene filtrato in base a singoli anni. Inoltre, se il confronto non è significativo si desidererà la restituzione di un valore BLANK.
Se si desidera seguire lo scenario, è possibile scaricare il foglio di calcolo con il modello dal foglio di calcolo relativo ai dati di esempio di PowerPivot.
Creare una misura denominata [ResellerSales compared to 2007] utilizzando l'espressione seguente:
=IF(HASONEVALUE(DateTime[CalendarYear]),SUM(ResellerSales_USD[SalesAmount_USD])/CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]),DateTime[CalendarYear]=2007),BLANK())
Dopo aver creato la misura, è necessario disporre di un risultato vuoto in [ResellerSales compared to 2007], come indicato di seguito:
ResellerSales compared to 2007
La cella BLANK nel risultato è dovuta all'assenza di filtri per singolo anno nel contesto.
Trascinare DateTime[CalendarYear] nella casella Etichette di colonna; la tabella deve essere simile alla seguente:
Etichette di colonna
2005
2006
2007
2008
ResellerSales compared to 2007
24.83 %
74.88 %
100.00 %
50.73 %
Trascinare ProductCategory[ProductCategoryName] nella casella Etichette di riga per avere un risultato simile al seguente:
ResellerSales compared to 2007
Etichette di colonna
Etichette di riga
2005
2006
2007
2008
Accessories
6.74 %
31.40 %
100.00 %
55.58 %
Bikes
28.69 %
77.92 %
100.00 %
53.46 %
Clothing
3.90 %
55.86 %
100.00 %
44.92 %
Components
11.05 %
65.99 %
100.00 %
38.65 %
Totale complessivo
24.83 %
74.88 %
100.00 %
50.73 %
Si noti che Totale complessivo viene visualizzato nella parte inferiore delle colonne ma non per le righe. Il motivo è che il contesto per Totale complessivo nelle righe implica più di un anno, ma per le colonne implica un solo anno.
Trascinare DateTime[CalendarYear] nella casella Filtro dei dati orizzontale e trascinare SalesTerritory[SalesTerritoryGroup] nella casella Etichette orizzontali. È consigliabile disporre di un set di risultati vuoto, perché nella tabella sono contenuti dati per più anni. Selezionare 2006 nel filtro dei dati. Nella tabella si dovrebbe disporre di nuovo di dati. Provare gli altri anni per vedere come i risultati cambiano.
In conclusione, HASONEVALUE() consente all'utente di identificare se l'espressione viene valutata nel contesto di un solo valore per il parametro columnName.