ナレッジベース

属性 (ATTR) 関数を使用するタイミング


発行: 27 May 2014
最終修正日: 24 Aug 2022

ご質問

属性 (ATTR) 関数のしくみ、および他の集計関数 (MIN や SUM など) との違い。

環境

Tableau Desktop

回答

ATTR() は複数の値を示す

ATTR() 集計は複数の値があることを示しますが、1 つだけと想定されていました。

たとえば、2 つ以上のデータ ソースをブレンドする場合、セカンダリ データ ソースのフィールドは集計しなければいけないため、セカンダリ データ ソースのフィールドは自動的に ATTR() で囲まれます。セカンダリ ディメンションに複数の値がある場合、ATTR(セカンダリ ディメンション) では「データ ブレンドのトラブルシューティング: シート内にアスタリスクが表示される」で詳しく説明されているようにビューにアスタリスクが表示されます。

ATTR() ではなく別の集計が使用された場合、Tableau Desktop で表示される情報が誤解を招く場合があります。MIN(セカンダリ ディメンション) などでは最初のディメンション値が表示され、セカンダリ データ ソースに実際には複数の値があることを示す方法がありません。アスタリスクはリレーションシップまたはビューの調整の必要があることを示しています。
 

仕組み

ATTR() はビュー (棒、円、セルなど) で 1 つのパーティションにグループ化されている参照元データの各レコードから得たすべての値を比較し、値がすべて同じであれば、ATTR() はその値を返します。それ以外の場合、ATTR() はアスタリスクを返します。

最もシンプルな形式では、次のような式になります。
 
IF MIN ([dimension]) = MAX ([dimension]) THEN MIN ([dimension]) ELSE "*"  END

ATTR 関数は、フィールド内のすべてのメンバーを評価し、1) 単一の値しかない場合 (MIN = MAX) または 2) すべてのメンバーが等しい場合 (MIN = MAX) は値を返し、それ以外の場合は "*" を返します。 これは、「複数の値がある」と解釈できます。

基本的な ATTR 関数を構築するには、ATTR 関数をトリガーする条件を追加します。たとえば、次のようになります。
 
IF ISNULL ([dimension]) THEN NULL
ELSEIF MIN ([dimension]) = MAX ([dimension]) THEN MIN ([dimension])
ELSE "*" 
END

 
(ディメンション フィールド [dimension] をユーザー自身のディメンションで更新します。)
 

ATTR() の使用事例

  • 上の例に示すとおり、ATTR() は複数のセカンダリ データ ソースの値があることを示すことができます。
     
  • ツールヒント上のディメンションは集計の必要があるため、[マーク] カード上のツールヒントに追加されたディメンションは自動的に ATTR() で囲まれます。MIN() のような他の集計が使用される場合、ツールヒントには単一の値が表示されるため、見る人に単一の値しかないという誤解を与える可能性があります。そのため、ATTR() ではツールヒントに追加されたビューや値の調整の必要があることを示すものとしてアスタリスクが表示されます。「ツールヒントのアスタリスク表示」を参照してください
     
  • 他の集計と同様に、ATTR() は非集計値を集計値に変更し、計算に含まれる集計エラーを解決するために使用できます。「計算エディターでの集計エラーのメッセージ」を参照してください

    数値データを返す計算に ATTR() が含まれ、ATTR() に複数の値がある場合、計算はアスタリスクではなく NULL を返します。
     
  • ATTR() はデータの変更を防ぐための予防策として使用できます。

制限事項

この記事で問題は解決しましたか?