VALUES
入力パラメーターが列名の場合は、指定された列の個別の値を含む 1 列のテーブルを返します。 重複する値は削除され、一意の値のみが返されます。 BLANK 値を追加できます。 入力パラメーターがテーブル名の場合は、指定されたテーブルの行を返します。 重複する行は保持されます。 BLANK 行を追加できます。
注意
この関数を使用して、ワークシート上のセルまたは列に値を返すことはできません。代わりに、式で入れ子になった中間関数として使用し、カウントしたり、他の値のフィルター処理や合計に使用したりすることができる個別の値のリストを取得します。
構文
VALUES(<TableNameOrColumnName>)
パラメーター
用語 | 定義 |
---|---|
TableName または ColumnName | 一意の値を返す対象となる列、または行を返す対象となるテーブル。 |
戻り値
入力パラメーターが列名の場合、1 列のテーブル。 入力パラメーターがテーブル名の場合、同じ列のテーブルが返されます。
解説
フィルター処理されたコンテキストで VALUES 関数を使用すると、VALUES によって返される一意の値がフィルターの影響を受けます。 たとえば、地域でフィルターを適用し、市区町村の値の一覧を返す場合、リストにはフィルターで許可されている地域の市区町村のみが含まれます。 既存のフィルターに関係なく、すべての都市を返すには、ALL 関数を使用してテーブルからフィルターを削除する必要があります。 2 番目の例では、VALUES と共に ALL を使用する方法を示します。
この関数は、計算列または行レベルのセキュリティ (RLS) ルールで使用される場合、DirectQuery モードでの使用はサポートされません。
VALUES を使用する場合のベスト プラクティスについては、「VALUES の代わりに SELECTEDVALUE を使用する」を参照してください。
関連する関数
ほとんどのシナリオでは、引数が列名の場合、VALUES 関数の結果は DISTINCT 関数の結果と同じになります。 どちらの関数も重複を削除し、指定された列で使用可能な値の一覧を返します。 しかし、VALUES 関数では、空白の値を返すこともできます。 この空白の値は関連テーブルから個別の値を検索する場合に便利ですが、リレーションシップで使用されている値は 1 つのテーブルに存在しません。 データベース用語では、これは参照整合性の違反と呼ばれます。 データの不一致は、1 つのテーブルが更新されていて、関連するテーブルが更新されていない場合に発生する可能性があります。
引数がテーブル名のとき、参照整合性の違反がある場合、VALUES 関数の結果には、指定したテーブルのすべての行と空白の行を返します。 DISTINCT 関数では、重複する行を削除し、指定されたテーブル内の一意の行を返します。
注意
DISTINCT 関数を使用すると、列名または任意の有効なテーブル式をその引数として使用できますが、VALUES 関数では、引数として列名またはテーブル名のみを使用できます。
次の表は、参照整合性が維持されない場合に、2 つの関連テーブルで発生する可能性があるデータの不一致をまとめたものです。
MyOrders テーブル | MySales テーブル |
---|---|
6 月 1 日 | 6 月 1 日の売上 |
6 月 2 日 | 6 月 2 日の売上 |
(注文日は入力されていません) | 6 月 3 日の売上 |
DISTINCT 関数を使用して日付の一覧を返す場合は、2 つの日付のみが返されます。 しかし、VALUES 関数を使用すると、関数では 2 つの日付と追加の空白メンバーを返します。 また、MyOrders テーブルに一致する日付がない MySales テーブルの行は、この不明なメンバーに "一致" します。
例
次の式では、一意の請求書 (販売注文) の数をカウントし、製品カテゴリ名を含むレポートで使用するときに、次の結果が生成されます。
= COUNTROWS(VALUES('InternetSales_USD'[SalesOrderNumber]))
戻り値
行ラベル | 請求書のカウント |
---|---|
アクセサリ | 18,208 |
バイク | 15,205 |
衣服 | 7,461 |
総計 | 27,659 |