Функция ALLNOBLANKROW
Из родительской таблицы связи возвращает все непустые строки либо все различные значения столбца, за исключением пустых строк, не учитывая существующие фильтры контекста.
Синтаксис
ALLNOBLANKROW(<table>|<column>)
Параметры
Элемент |
Определение |
---|---|
table |
Таблица, из которой удаляются все фильтры контекста. |
column |
Столбец, из которого удаляются все фильтры контекста. |
Необходимо передавать только один параметр: таблицу или столбец.
Возвращаемое значение
Таблица, если передан параметр-таблица, или столбец значений, если передан параметр-столбец.
Замечания
Функция ALLNOBLANKROW отфильтровывает только непустые строки в родительской таблице связи. В результате будут показаны одна или несколько строк в дочерней таблице, которые содержат значения, отличные от родительского столбца. В следующем примере приведено подробное объяснение.
В следующей таблице представлены варианты функции ALL, которые предоставляются в DAX, и различия между этими вариантами.
Функция и использование |
Описание |
---|---|
ALL(столбец) |
Удаляет все фильтры из указанного столбца в таблице. Все остальные фильтры в таблице, применяемые к другим столбцам, продолжают действовать. |
ALL(таблица) |
Удаляет все фильтры из указанной таблицы. |
ALLEXCEPT(таблица,столбец1,столбец2...) |
Переопределяет все фильтры контекста в таблице, кроме фильтров для указанных столбцов. |
ALLNOBLANK(таблица|столбец) |
Из родительской таблицы связи возвращает все непустые строки либо все различные значения столбца, за исключением пустых строк, не учитывая существующие фильтры контекста. |
Общее описание работы функции ALL, а также пошаговые примеры использования функций ALL(таблица) и ALL(столбец) см. в разделе Функция ALL.
Пример
В образце данных таблица ResellerSales_USD содержит одну пустую строку, поэтому не может быть связана с какой-либо родительской таблицей в связи в пределах книги. Данная таблица будет использоваться в сводной таблице, поэтому пользователь сможет увидеть обращение с пустыми строками и каким образом обрабатываются счетчики по несвязанным данным.
Шаг 1. Проверка несвязанных данных
Откройте окно PowerPivot, далее выделите таблицу ResellerSales_USD. Отфильтруйте пустые значения в столбце ProductKey. В результате останется одна строка. В данной строке все значения столбцов должны быть пустыми, за исключением столбца SalesOrderLineNumber.
Шаг 2. Создание сводной таблицы
Создайте новую сводную таблицу, затем перетащите столбец datetime.[Calendar Year] на панель «Метки строк». В следующей таблице показаны ожидаемые результаты.
Метки строк |
---|
2005 |
2006 |
2007 |
2008 |
|
Общий итог |
Обратите внимание на пустую метку между строками 2008 и Общие итоги. Эта пустая метка представляет неизвестный элемент, который является специальной группой, созданной для учета всех значений в дочерней таблице, не имеющих совпадающего значения в родительской таблице. В данном примере это столбец datetime.[Calendar Year].
Когда пользователь видит эту пустую метку в сводной таблице, он понимает, что в некоторых таблицах, которые связаны со столбцом datetime.[Calendar Year], содержатся пустые или несовпадающие значения. Родительская таблица представляет таблицу, в которой показаны пустые метки, но несовпадающие строки находятся в одной или нескольких дочерних таблицах.
Строки, которые добавляются к этой группе пустых меток, являются значениями, которые не совпадают с любыми значениями в родительской таблице, например дата, которая не существует в таблице DateTime, или значения NULL, указывающие, что значение для даты отсутствует. В этом примере помещается пустое значение во все столбцы дочерней таблицы продаж. Большее количество значений в родительской таблице по сравнению с дочерними таблицами не вызывает ошибки.
Шаг 3. Подсчет строк с использованием функций ALL и ALLNONBLANK
Добавьте две следующие меры к таблице Datetime для подсчета строк в таблице: Countrows ALLNOBLANK of datetime, Countrows ALL of datetime. Далее в разделе кода представлены формулы, которые можно использовать для определения этих мер.
В пустую сводную таблицу добавьте столбец datetime.[Calendar Year] к меткам строки, затем добавьте вновь созданные меры. Полученные результаты должны иметь следующий вид.
Метки строк |
Countrows ALLNOBLANK of datetime |
Countrows ALL of datetime |
---|---|---|
2005 |
1280 |
1281 |
2006 |
1280 |
1281 |
2007 |
1280 |
1281 |
2008 |
1280 |
1281 |
|
1280 |
1281 |
Общий итог |
1280 |
1281 |
Результаты отличаются на 1 строку в счетчике строк таблиц. Однако, если открыть окно PowerPivot и выделить таблицу Datetime, в ней нельзя будет найти пустую строку, так как специальную пустую строку, упоминавшуюся здесь, представляет неизвестный элемент.
Шаг 4. Проверка точности подсчета
Для проверки того, что функция ALLNOBLANKROW не выполняет подсчет по настоящему пустых строк, а работает со специальной пустой строкой только в родительской таблице, добавьте две следующие меры к таблице ResellerSales_USD: Countrows ALLNOBLANKROW of ResellerSales_USD, Countrows ALL of ResellerSales_USD.
Создайте новую сводную таблицу, затем перетащите столбец datetime.[Calendar Year] на панель «Метки строк». Далее добавьте вновь созданные меры. Полученные результаты должны иметь следующий вид.
Метки строк |
Countrows ALLNOBLANKROW of ResellerSales_USD |
Countrows ALL of ResellerSales_USD |
---|---|---|
2005 |
60856 |
60856 |
2006 |
60856 |
60856 |
2007 |
60856 |
60856 |
2008 |
60856 |
60856 |
|
60856 |
60856 |
Общий итог |
60856 |
60856 |
Теперь обе меры имеют одинаковые значения. Это так из-за того, что функция ALLNOBLANKROW не выполняет подсчет каких-либо действительно пустых строк, а обрабатывает только пустую строку, которая специально создана в родительской таблице для случая, когда одна или несколько дочерних таблиц в связи содержат пустые или несовпадающие значения.
// Countrows ALLNOBLANK of datetime
= COUNTROWS(ALLNOBLANKROW('DateTime'))
// Countrows ALL of datetime
= COUNTROWS(ALL('DateTime'))
// Countrows ALLNOBLANKROW of ResellerSales_USD
=COUNTROWS(ALLNOBLANKROW('ResellerSales_USD'))
// Countrows ALL of ResellerSales_USD
=COUNTROWS(ALL('ResellerSales_USD'))