Страницы: 1
RSS
DAX. Функция HASONEVALUE., Помогите понять как она работает в приведенном примере.
 

Подскажите пожалуйста, почему срабатывает условие IF( HASONEVALUE( 'Table1[Type] ) меры measure 1, хотя в столбце [Type] не одно, а несколько значений ?
Спасибо
Изменено: 0033s - 24.05.2024 10:35:39
 
Почему там не одно значение? как раз таки одно, а вот для итогов уже 3
 
Цитата
написал:
 Почему там не одно значение? как раз таки одно, а вот для итогов уже 3
Если оно "одно", то какое его значение ? И к примеру, как выглядели бы 2 значения ?
Или может "одно" относится к ячейке, а не ко всему столбцу ?
Изменено: 0033s - 24.05.2024 10:50:42
 
Цитата
0033s написал:
Или может "одно" относится к ячейке, а не ко всему столбцу ?
Да. Для каждой "ячейки" проверяется единственность уникальных значений 'Table1[Type] в текущем контексте фильтра.
В строках конкретных Type задает контекст фильтра именно по этому Type, то есть в них HASONEVALUE( 'Table1[Type] ) будет true.
По сути эта функция эквивалентна COUNTROWS ( VALUES ( 'Table1[Type] ) ) = 1

Почему просто не почитать про функцию? :)
 
0033s, напишите меру CONCATENATEX( Table1, Table1[Type], ", ") и все станет понятно (включите при этом subtotals в отчете).
Цитата
0033s написал:
И к примеру, как выглядели бы 2 значения ?
добавьте в таблицу строку X - A - 25 и обновите отчет. Т.е. строк в таблице в строке X - A уже 2, но HASONEVALUE все равно даст TRUE, т.к. значение А в столбце Type в этом случае уникальное. Но лучше всего это subtotals покажут.
Цитата
0033s написал:
Или может "одно" относится к ячейке, а не ко всему столбцу ?
вы через вопросы на этом форуме решили освоить азы DAX? Напрасно. Почитайте лучше какую-нибудь хорошую книгу. Например, вот эту: ПОДРОБНОЕ РУКОВОДСТВО ПО DAX. Ссылки (и скидки) на эту и другие хорошие книги можно получить вот здесь: click_me
Изменено: AlienSx - 24.05.2024 12:28:56
Пришелец-прораб.
 
AlienSx,
Цитата
написал:
вы через вопросы на этом форуме решили освоить азы DAX?
Не совсем так. Я решаю свои производственные задачи, точнее сказать переписываю решения полученные исключительно с помощью PQ на PQ+PP.
На этом пути встречаются подводные камни, которые я решаю с помощью форума.
За ссылку на книгу спасибо, обязательно постараюсь приобрести как только накоплю критическую массу вопросов.
Изменено: 0033s - 24.05.2024 12:41:02
 
surkenny, спасибо!
 
AlienSx,
Цитата
написал:
добавьте в таблицу строку X - A - 25 и обновите отчет. Т.е. строк в таблице в строке X - A уже 2, но HASONEVALUE все равно даст TRUE, т.к. значение А в столбце Type в этом случае уникальное.
Это просто китайская грамота. Я добавил еще одну строку X - A - 11 , итого у меня две совершенно одинаковые строки, где же тут уникальность?
Может я легче пойму, если вы сможете привести пример, не уникального А ?
 
Цитата
0033s написал:
две совершенно одинаковые строки, где же тут уникальность?
8-0  а и правда, где ж она? HASONEVALUE проверяет наличие только одного уникального значения среди всех значений в столбце. Его суть описана выше surkenny, за что вы его поблагодарили. Видимо все поняли, но, как оказалось, нет...
Вот еще проHASONEVALUE:

Вот еще немного: вот эти простые меры
Код
count_all_rows:=COUNTROWS(Table1)
concatenate_[type]:=CONCATENATEX(Table1, Table1[Type], ", ")
distinct_count_[type]:=DISTINCTCOUNT(Table1[Type])
has_one_value_[type]:=HASONEVALUE(Table1[Type])

дают следующий результат (вы ж картинки любите)

Как же так получается, что при наличии 2х одинаковых строк в evaluation context в строке X -- A меры нам показывают уникальность количество уникальных значений = 1 в столбце Type? Наверное, ошибка в DAX. Давайте подаваться на Нобелевскую премию скорее.
В силу вышеизложенного, я не смогу привести вам пример "неуникального А", будь их сколь угодно много в нашем распоряжении.
Я или плохо объясняю (что скорее всего) или не пойму чего вы хотите спросить. Поэтому, разрешите за сим откланяться и покинуть поле боя.
Изменено: AlienSx - 24.05.2024 13:58:15 (кол-во уникальных значений)
Пришелец-прораб.
 
Цитата
написал:
или плохо объясняю (что скорее всего) или не пойму чего вы хотите спросить
Старик и малыш смотрят на слона:
Малыш: "У-хх, какой огромный !"
Старик: "Фу, какой грязный"
 
0033s, юмора не понял, ну и ладно. Мне кажется, что все непонимание (друг друга) крутится вокруг этого термина "уникальный" (набор значений). Безусловно, список {A, A} состоит из повторяющихся значений и List.IsDistinct (Power Query M) выдаст нам FALSE. Но он состоит из единственного уникального значения А, что и является причиной того, что HASONEVALUE (DAX) выдает TRUE. Так уж работает эта функция.
Пришелец-прораб.
 
AlienSx, видимо есть какое то промежуточное понятие, которое я проскакиваю и от этого картина никак не складывается.
В любом случае спасибо, за помощь и особенно за картинку (я их и правда люблю), она многое объясняет
Страницы: 1
Наверх