Функция 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 и Grand Total. Эта пустая метка представляет неизвестный элемент, который является специальной группой, созданной для учета всех значений в дочерней таблице, не имеющих совпадающего значения в родительской таблице. В данном примере это столбец 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

Grand Total

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

Grand Total

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'))