ALLNOBLANKROW
從關聯性的父數據表,傳回除了空白數據列外的所有數據列,或數據行的所有相異值,但空白數據列,並忽略可能存在的任何內容篩選。
語法
ALLNOBLANKROW( {<table> | <column>[, <column>[, <column>[,…]]]} )
參數
術語 | 定義 |
---|---|
table |
拿掉所有內容篩選的數據表。 |
column |
拿掉所有內容篩選的數據行。 |
只有一個參數必須傳遞;參數是數據表或數據行。
傳回值
當傳遞的參數是數據表或值的數據行時,當傳遞的參數是數據行時,數據表。
言論
ALLNOBLANKROW 函式只會篩選父數據表在關聯性中的空白數據列時,子數據表中有一或多個數據列與父數據行沒有相符的值。 如需完整說明,請參閱下列範例。
下表摘要說明 DAX中所提供的
ALL
變化及其差異:函式和使用方式 描述 ALL(Column)
從數據表中指定的數據列中移除所有篩選;數據表中所有其他篩選條件,在其他數據行上仍適用。 ALL(Table)
從指定的數據表中移除所有篩選。 ALLEXCEPT(Table,Col1,Col2...)
覆寫數據表中除了指定的數據行以外的所有內容篩選。 ALLNOBLANK(table|column)
從關聯性的父數據表,傳回除了空白數據列的所有數據列,或數據行的所有相異值,但空白數據列,並忽略可能存在的任何內容篩選 如需 ALL 函式運作方式的一般描述,以及使用 ALL和 ALL(Column) 的逐步範例,請參閱 ALL 函式。
在匯出數據行或數據列層級安全性 (RLS) 規則中使用時,不支援在 DirectQuery 模式中使用此函式。
例
在範例數據中,ResellerSales_USD數據表包含一個沒有值的數據列,因此無法與活頁簿內關聯性中的任何父數據表相關。 您會在數據透視表中使用此數據表,以便查看空白數據列行為,以及如何處理不相關的數據計數。
步驟 1:驗證不相關的數據
開啟
步驟 2:建立數據透視表
建立新的數據透視表,然後拖曳數據行 datetime。[行事曆年份],移至 [數據列卷標] 窗格。 下表顯示預期的結果:
數據列標籤 |
---|
2005 |
2006 |
2007 |
2008 |
總計 |
請注意 2008 與 總計之間的空白標籤。 這個空白卷標代表 Unknown 成員,這是一個特殊群組,用來考慮父數據表中沒有任何相符值之子數據表中的任何值,在此範例中為 datetime。[Calendar Year] 資料行。
當您在資料透視表中看到這個空白標籤時,您知道在與資料行日期時間相關的部分數據表中。[Calendar Year],有空白值或不相符的值。 父數據表是顯示空白標籤的數據表,但不符合的數據列位於一或多個子數據表中。
新增至這個空白標籤的數據列可以是不符合父數據表中任何值的值,例如,日期時間數據表中不存在的日期,或 Null 值,表示完全沒有日期的值。 在此範例中,我們已在子銷售數據表的所有數據行中放置空白值。 父數據表中的值比子數據表中的值多,不會造成問題。
步驟 3:使用 ALL 和 ALLNOBLANK 計算數據列
將下列兩個量值新增至 datetime 資料表,以計算資料表數據列:datetime的 Countrows ALLNOBLANK、countrows ALL datetime。 您可以用來定義這些量值的公式如下:
// 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'))
在空白的數據透視表上新增 datetime。[Calendar Year] 數據行至數據列卷標,然後新增新建立的量值。 結果看起來應該如下表:
數據列標籤 | datetime 的 Countrows ALLNOBLANK | datetime 的 Countrows ALL |
---|---|---|
2005 | 1280 | 1281 |
2006 | 1280 | 1281 |
2007 | 1280 | 1281 |
2008 | 1280 | 1281 |
1280 | 1281 | |
總計 | 1280 | 1281 |
結果會顯示數據表數據列計數中1個數據列的差異。 不過,如果您開啟 [Power Pivot] 視窗 並選取 datetime 數據表,則找不到數據表中的任何空白數據列,因為這裡提到的特殊空白數據列是 [未知] 成員。
步驟 4:確認計數正確
為了證明 ALLNOBLANKROW 不會計算任何真正空白的數據列,而且只處理父數據表上的特殊空白數據列,請將下列兩個量值新增至ResellerSales_USD數據表:countrows ALLNOBLANKROW ResellerSales_USD、Countrows ALL ResellerSales_USD。
建立新的數據透視表,然後拖曳數據行 datetime。[行事曆年份],移至 [數據列卷標] 窗格。 現在新增您剛才建立的量值。 結果看起來應該如下所示:
數據列標籤 | ResellerSales_USD的 Countrows ALLNOBLANKROW | ResellerSales_USD的 Countrows ALL |
---|---|---|
2005 | 60856 | 60856 |
2006 | 60856 | 60856 |
2007 | 60856 | 60856 |
2008 | 60856 | 60856 |
60856 | 60856 | |
總計 | 60856 | 60856 |
現在,這兩個量值的結果相同。 這是因為 ALLNOBLANKROW 函式不會計算數據表中真正空白的數據列,但只會處理父數據表中產生之特殊案例的空白數據列,而關聯性中的一或多個子數據表包含不相符的值或空白值。