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())
  1. 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.

  2. 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 %

  3. 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.

  4. 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.

  5. In conclusione, HASONEVALUE() consente all'utente di identificare se l'espressione viene valutata nel contesto di un solo valore per il parametro columnName.