次の方法で共有


ALLNOBLANKROW 関数

リレーションシップの親テーブルから、空白行を除くすべての行を返すか、列内の空白行を除く個別の値すべてを返します。このとき、コンテキスト フィルターはあっても無視されます。

構文

ALLNOBLANKROW(<table>|<column>)

パラメーター

項目

定義

table

すべてのコンテキスト フィルターを削除する対象のテーブル。

column

すべてのコンテキスト フィルターを削除する対象の列。

パラメーターは 1 つのみ渡す必要があります。パラメーターは table または column のいずれかです。

戻り値

渡されたパラメーターが table の場合はテーブル、渡されたパラメーターが column の場合は値の列です。

説明

ALLNOBLANKROW 関数は、リレーションシップの親の列に一致しない値を持つ行が子テーブル内に 1 つ以上あるとき親テーブルに表示される、空白行のみをフィルター処理します。 詳細な説明については、次の例を参照してください。

次の表に、DAX に用意されている ALL のバリエーションと、その違いをまとめます。

関数および使用法

説明

ALL(Column)

テーブル内の指定された列からすべてのフィルターを除去します。テーブル内の他の列にある他のすべてのフィルターはそのまま適用されます。

ALL(Table)

指定されたテーブルからすべてのフィルターを除去します。

ALLEXCEPT(Table,Col1,Col2...)

指定された列にあるフィルター以外の、テーブル内のすべてのコンテキスト フィルターを無効にします。

ALLNOBLANK(table|column)

リレーションシップの親テーブルから、空白行を除くすべての行を返すか、列内の空白行を除く個別の値すべてを返します。このとき、コンテキスト フィルターはあっても無視されます。

ALL 関数の動作の一般的な説明と、ALL(Table) および ALL(Column) を使用する実際の操作手順については、「ALL 関数」を参照してください。

使用例

このサンプル データの ResellerSales_USD テーブルには、値を持たないため、ブック内のリレーションシップで親テーブルのいずれにも関連付けられない行が、1 つ含まれています。 このテーブルをピボットテーブルで使用して、空白行の動作と、関連付けられないデータのカウント処理方法を確認できます。

手順 1: 関連付けられないデータの確認

[PowerPivot ウィンドウ] を開き、ResellerSales_USD テーブルを選択します。 ProductKey 列で空白値をフィルター選択します。 1 行が残ります。 その行では、SalesOrderLineNumber を除くすべての列値が空白です。

手順 2: ピボットテーブルの作成

新しいピボットテーブルを作成し、datetime.[Calendar Year] という列を [行ラベル] ペインにドラッグします。 予想される結果を次の表に示します。

行ラベル

2005

2006

2007

2008

 

総計

[2008][総計] の間に空白のラベルがあります。 この空白のラベルは、不明なメンバーを表します。不明なメンバーとは、親テーブルのいずれの値とも一致しない子テーブルの値を表すために作成される特別なグループです (この例では datetime.[Calendar Year] 列)。

ピボットテーブルにこの空白のラベルが表示された場合、datetime.[Calendar Year] 列に関連付けられたテーブルの一部に空白値または一致しない値があることがわかります。 空白のラベルは親テーブルに表示されますが、一致しない行は 1 つ以上の子テーブルにあります。

この空白のラベル グループに追加される行は、親テーブルのいずれの値とも一致しない値 (datetime テーブルに存在しない日付など) か、日付の値が存在しないことを意味する NULL 値です。 この例では、子の売上テーブルのすべての列に空白値を含めています。 子テーブルより多くの値が親テーブルにあっても、問題は起きません。

手順 3: ALL および ALLNONBLANK を使用した行数のカウント

Countrows ALLNOBLANK of datetime および Countrows ALL of datetime の 2 つのメジャーを 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 ウィンドウ] を開いて datetime テーブルを選択しても、テーブル内に空白行は見つかりません。この場合の特別な空白行が不明なメンバーであるからです。

手順 4: カウントの正確さの確認

ALLNOBLANKROW が本当の空白行をカウントせず、親テーブルにある特別な空白行のみを処理することを確認するため、Countrows ALLNOBLANKROW of ResellerSales_USDCountrows ALL of ResellerSales_USD の 2 つのメジャーを 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

今度は、2 つのメジャーの結果が同じです。 これは、ALLNOBLANKROW 関数が、テーブル内の本当の空白行をカウントせず、リレーションシップの 1 つ以上の子テーブル内に一致しない値または空白値があるときに親テーブルに生成される、特別な空白行のみを処理するからです。

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

関連項目

参照

ALL 関数

FILTER 関数

その他の技術情報

フィルター関数 (DAX)