Функция HASONEVALUE (DAX)

Возвращает значение TRUE при фильтрации содержимого столбца columnName до одного уникального значения. В противном случае возвращается значение FALSE.

HASONEVALUE(<columnName>)
columnName

Имя существующего столбца в стандартном синтаксисе DAX. Не может быть выражением.

Возвращает значение TRUE при фильтрации содержимого столбца columnName до одного уникального значения. В противном случае возвращается значение FALSE.

  • Эквивалентное выражение для HASONEVALUE() — COUNTROWS(VALUES(<columnName>)) = 1.

В следующем примере необходимо создать формулу для проверки выполнения среза содержимого по одному значению для вычисления процента для стандартного сценария. В этом случае необходимо сравнить продажи посредников с продажами в 2007 г., затем необходимо выяснить, выполнялась ли фильтрация содержимого по отдельным годам. Также, если сравнение будет безрезультатным, должно возвращаться пустое значение.

Ознакомиться со сценарием можно, загрузив электронную таблицу из Образца данных PowerPivot.

Создайте меру с именем [ResellerSales compared to 2007] с использованием следующего выражения:

=IF(HASONEVALUE(DateTime[CalendarYear]),SUM(ResellerSales_USD[SalesAmount_USD])/CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]),DateTime[CalendarYear]=2007),BLANK())
  1. В результате создания меры должен быть получен пустой результат в [ResellerSales compared to 2007], как показано ниже.

    ResellerSales в сравнении с 2007 г.

    Результатом будет пустая ячейка, поскольку в содержимом отсутствуют фильтры по отдельным годам.

  2. Перетащите поле DateTime[CalendarYear] в область Метки столбцов. Таблица должна выглядеть следующим образом.

    Метки столбцов

    2005

    2006

    2007

    2008

    ResellerSales в сравнении с 2007 г.

    24.83 %

    74.88 %

    100.00 %

    50.73 %

  3. Перетащите поле ProductCategory[ProductCategoryName] в область Метки строк для получения следующего результата.

    ResellerSales в сравнении с 2007 г.

    Метки столбцов

    Метки строк

    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 %

    Grand Total

    24.83 %

    74.88 %

    100.00 %

    50.73 %

    Вы обратили внимание, что Общие итоги отображаются в нижней части столбцов, но не отображаются для строк? Причина заключается в том, что общие итоги для строк указывают на несколько лет, но для столбцов для вычисления этого значения используются данные за один год.

  4. Перетащите поле DateTime[CalendarYear] в область Горизонтальные срезы, а поле SalesTerritory[SalesTerritoryGroup] в область Горизонтальные метки. Должен быть получен пустой результирующий набор, поскольку в таблице содержатся данные за несколько лет. Выберите в срезе 2006, после чего таблица должна заполниться данными. Чтобы просмотреть изменение данных, повторите операцию для других лет.

  5. В заключение следует отметить, что функция HASONEVALUE() позволяет определить, было ли выражение вычислено для одного значения в столбце columnName.