共用方式為


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:驗證不相關的數據

開啟 Power Pivot 視窗,然後選取ResellerSales_USD數據表。 在 ProductKey 數據行中,篩選空白值。 一個數據列會保留下來。 在該數據列中,除了 SalesOrderLineNumber 以外,所有數據行值都應該是空白的。

步驟 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_USDCountrows 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 函式不會計算數據表中真正空白的數據列,但只會處理父數據表中產生之特殊案例的空白數據列,而關聯性中的一或多個子數據表包含不相符的值或空白值。

Filter 函式ALL 函式FILTER 函式