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