ALLNOBLANKROW 函數
從具有關聯性的父資料表,傳回所有資料列 (空白資料列除外) 或是某個資料行的所有相異值 (空白資料列除外),並忽略可能存在的任何內容篩選。
語法
ALLNOBLANKROW(<table>|<column>)
參數
詞彙 |
定義 |
---|---|
table |
移除所有內容篩選的資料表。 |
column |
移除所有內容篩選的資料行。 |
只有一個參數必須傳遞;參數是資料表或資料行。
傳回值
資料表 (當傳遞的參數是資料表時) 或值的資料行 (當傳遞的參數是資料行時)。
備註
ALLNOBLANKROW 函數只會篩選具有關聯性的父資料表將會顯示的空白資料列,前提是子資料表中有一個或多個資料列的值與父資料行不相符。 如需詳細說明,請參閱以下範例。
下表摘要列出 DAX 中所提供的 ALL 變化以及其差異:
函數和用法 |
說明 |
---|---|
ALL(Column) |
從資料表中指定的資料行移除所有篩選;資料表中其他資料行的所有其他篩選仍然會套用。 |
ALL(Table) |
從指定的資料表移除所有篩選。 |
ALLEXCEPT(Table,Col1,Col2...) |
除了所指定的資料行之外,覆寫資料表中的所有內容篩選。 |
ALLNOBLANK(table|column) |
從具有關聯性的父資料表,傳回所有資料列 (空白資料列除外) 或是某個資料行的所有相異值 (空白資料列除外),並忽略可能存在的任何內容篩選 |
如需 ALL 函數如何運作的一般描述,以及使用 ALL(Table) 和 ALL(Column) 的逐步範例,請參閱<ALL 函數>。
範例
在範例資料中,ResellerSales_USD 資料表包含一個沒有值的資料列,因此在活頁簿的關聯性中,不能與任何父資料表產生關聯。 您將會在樞紐分析表中使用這個資料表,好讓您可以查看空白資料列行為以及如何處理不相關資料的計數。
步驟 1:驗證不相關的資料
開啟 [PowerPivot 視窗],然後選取 [ResellerSales_USD] 資料表。 在 ProductKey 資料行中,篩選空白值。 有一個資料列會留下。 在該資料列中,所有資料行值都應該空白,但是 SalesOrderLineNumber 除外。
步驟 2:建立樞紐分析表
建立新的樞紐分析表,然後將 datetime.[Calendar Year] 資料行拖曳到 [資料列標籤] 窗格。 下表會顯示預期的結果:
資料列標籤 |
---|
2005 |
2006 |
2007 |
2008 |
|
總計 |
請注意 [2008] 與 [總計] 之間的空白標籤。 這個空白標籤表示未知的成員,這是已建立的特殊群組,用來表示子資料表中未符合父資料表內任何值的所有值,也就是此範例中的 datetime.[Calendar Year] 資料行。
當您在樞紐分析表看到這個空白標籤時,您就知道在與 datetime.[Calendar Year] 資料行相關的某些資料表中,不是有空白值就是有不相符的值。 父資料表是顯示空白標籤的資料表,但是不相符的資料列位於一個或多個子資料表中。
加入到這個空白標籤群組的資料列不是不符合父資料表中任何值的值 (例如不存在於日期時間資料表中的日期),就是 null 值 (表示根本沒有日期值)。 在這個範例中,我們將空白值放入子銷售資料表的所有資料行中。 在父資料表中擁有多於子資料表的值並不會發生問題。
步驟 3:使用 ALL 和 ALLNONBLANK 計算資料列數目
將下列兩個量值加入至日期時間資料表來計算資料表資料列數目: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 視窗] 並選取日期時間資料表,您無法在資料表中找到任何空白資料列,因為這裡所提及的特殊空白資料列為未知的成員。
步驟 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'))