次の方法で共有


ALLNOBLANKROW

適用対象: 計算列計算テーブルメジャービジュアル計算

リレーションシップの親テーブルから、空白行以外のすべての行、または空白行以外の列のすべての個別の値を返し、存在する可能性のあるコンテキスト フィルターは無視します。

構文

ALLNOBLANKROW( {<table> | <column>[, <column>[, <column>[,…]]]} )

パラメーター

用語 定義
table すべてのコンテキスト フィルターが削除されるテーブル。
column すべてのコンテキスト フィルターが削除される列。

パラメーターは 1 つだけ渡す必要があります。パラメーターはテーブルまたは列です。

戻り値

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

備考

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

  • 次の表は、DAXで提供される ALL のバリエーションとその違いをまとめたものです。

    関数と使用法 形容
    ALL(Column) テーブル内の指定した列からすべてのフィルターを削除します。テーブル内の他のすべてのフィルターは、他の列に適用されます。
    ALL(Table) 指定したテーブルからすべてのフィルターを削除します。
    ALLEXCEPT(Table,Col1,Col2...) 指定した列を除く、テーブル内のすべてのコンテキスト フィルターをオーバーライドします。
    ALLNOBLANK(table|column) リレーションシップの親テーブルから、空白行以外のすべての行、または空白行以外の列のすべての個別の値を返し、存在する可能性があるコンテキスト フィルターを無視します

    関数のしくみの一般的な説明と、(Table) と (Column) を使用するステップ バイ ステップの例については、関数 参照してください。

  • この関数は、計算列または行レベル セキュリティ (RLS) 規則で使用する場合、DirectQuery モードでは使用できません。

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

手順 1: 関連のないデータを確認する

Power Pivot ウィンドウ開き、ResellerSales_USDテーブルを選択します。 ProductKey 列で、空白の値をフィルター処理します。 1 行が残ります。 その行では、SalesOrderLineNumber を除くすべての列値を空白にする必要があります。

手順 2: ピボットテーブルを作成する

新しいピボットテーブルを作成し、列 datetime をドラッグします。[Calendar Year], to the Row Labels pane. 次の表に、予想される結果を示します。

行ラベル
2005
2006
2007
2008
総計

2008総計の間の空白のラベルに注意してください。 この空白ラベルは、親テーブルの値が一致しない子テーブル内の値を考慮するために作成された特殊なグループである Unknown メンバーを表します。この例では datetime です。[Calendar Year] 列。

ピボットテーブルにこの空白のラベルが表示されると、列に関連する一部のテーブルで datetime が表示されます。[暦年]には、空白の値または一致しない値があります。 親テーブルは空白のラベルを示すテーブルですが、一致しない行は 1 つ以上の子テーブルにあります。

この空白のラベル グループに追加される行は、親テーブルの値と一致しない値のいずれかです。たとえば、datetime テーブルに存在しない日付や null 値です。つまり、日付の値はまったくありません。 この例では、子売上テーブルのすべての列に空白の値を配置しました。 親テーブルの値が子テーブルよりも多い場合、問題は発生しません。

手順 3: ALL と ALLNOBLANK を使用して行をカウントする

datetime テーブルに次の 2 つのメジャーを追加して、テーブルの行をカウントします。datetimeの ALLNOBLANK Countrows ALLNOBLANK、datetimeの Countrows 。 これらのメジャーの定義に使用できる数式は次のとおりです。

// 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 の ALLNOBLANK をカウントします。 datetime の 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 テーブルに次の 2 つのメジャーを追加します。Countrows ALLNOBLANKROW of ResellerSales_USDCountrows ALL of ResellerSales_USD

新しいピボットテーブルを作成し、列 datetime をドラッグします。[Calendar Year], to the Row Labels pane. ここで、先ほど作成したメジャーを追加します。 結果は次のようになります。

行ラベル ResellerSales_USDのカウント ALLNOBLANKROW ResellerSales_USDのカウント ALL
2005 60856 60856
2006 60856 60856
2007 60856 60856
2008 60856 60856
60856 60856
総計 60856 60856

これで、2 つのメジャーの結果が同じになりました。 これは、ALLNOBLANKROW 関数はテーブル内の真の空白行をカウントせず、リレーションシップ内の 1 つ以上の子テーブルに一致しない値または空白値が含まれている場合に、親テーブルで生成される特殊なケースである空白行のみを処理するためです。

関数ALL 関数FILTER 関数 をフィルター処理する