ナレッジベース

メジャーをディメンションに変換できない


発行: 01 May 2013
最終修正日: 17 Mar 2023

問題

計算フィールドを作成する際、Tableau Desktop ではそれがディメンションではなくメジャーとして認識される可能性があります。そのフィールドをディメンションに変換しようとすると、変換できない可能性があります。

環境

Tableau Desktop

解決策

オプション 1: FIXED ステートメントを追加する

詳細レベル (LOD) の関数 FIXED はディメンションに変換できます。元の計算に応じて正確な解は異なりますが、計算は全体として非集計である必要があることに注意してください (FIXED、非集計フィールド、パラメーター、定数リテラル値はすべて非集計です)。以下の例を参照してください。
 
例 1
◇メジャーのみが可能です。
IF SUM([SALES]) < 100
THEN "Low"
ELSE "High"
END	
ディメンションに変換できます。
IF { FIXED [Region] : SUM( [Sales] ) } < 100
THEN "Low"
ELSE "High"
END	
 
例 2
◇メジャーのみが可能です。
AVG( 
   IF { FIXED [Region] : SUM( [Sales] ) } < 100 
   THEN "Low" 
   ELSE "High" 
   END 
)
ディメンションに変換できます。
{FIXED [Category] : AVG(
   IF { FIXED [Region] : SUM( [Sales] ) } < 100
   THEN "Low"
   ELSE "High"
   END
) }
 
例 3
◇メジャーのみが可能です。
ATTR( [Category] ) + " value"
ディメンションに変換できます。
{ FIXED [Order ID] : MIN( [Category] ) } + " value"
 
注: ATTR() は表関数であり、FIXED 式の内部では使用できないため、ATTR() を MIN() に置き換える必要がありました。ビュー内の 1 つのパーティション (行、セル、バー、ライン ドットなど) に [Category] の一意の値が複数個存在する場合、ATTR() は NULL を返します。これは、データ品質の問題を識別するのに役立ちます。これに対して、MIN() は常に最小値を返します。これは、文字列値のアルファベット順での先頭です。MIN( [Category] ) が、常に 1 つのカテゴリー値のみを含むディメンションまたはディメンションの組み合わせに固定されている限り、何も問題は発生しません。
 

オプション 2: 集計を削除する

集計が実際には必要ない場合があります。たとえば、{ FIXED [Region] : SUM( [Sales] } は地域ごとの総売上高を返しますが、データ ソースに地域あたり 1 つのレコードしか含まれていない場合は、[Sales] が同じ値を返します。
 
例 1
◇メジャーのみが可能です。
IF SUM([SALES]) < 100
THEN "Low"
ELSE "High"
END	
ディメンションに変換できます。
IF [Sales] < 100
THEN "Low"
ELSE "High"
END	

 

オプション 3: Tableau で生成されたビン フィールドを使用する

場合によっては、元の計算を Tableau で生成されたビン フィールドに置き換えることができる可能性があります。手順については、「連続メジャーからのビンの作成」
を参照してください。
 

オプション 4: 計算を Tableau Prep で行う

Tableau Prep からの出力は常に非集計であるため、常にディメンションに変換できます。元の計算に応じて、Tableau Prep で必要な手順は異なります。一般に、Tableau Prep で SUM( [Sales] ) などの式を複製するには、集計ステップが必要になります。

表計算は、詳細レベルの関数の内部に配置できないため、非集計にすることはできません。表計算によっては、Tableau Prep でもう一度作成できるものがあります。たとえば、LOOKUP() をシフト自己結合に置き換えることができる場合があります。「Tableau Prep での Lookup 表計算」を参照してください。
 

オプション 5: データ ブレンドを使用する代わりにデータを結合する

セカンダリ データ ソースからのフィールドは集計する必要があります。これはデータ ブレンドの制限であり、回避策はありません。クロスデータベース結合または Tableau Prep での結合を検討してください。
 

原因

計算フィールドで集計が使用されている場合、計算の結果は動的であるため、メジャーをディメンションに変換することはできません。

たとえば、SUM([Sales]) は、[Region] が行シェルフにある場合と [Category] が行シェルフにある場合とで異なる結果を返します。ただし、式 {FIXED [Region] : SUM( [Sales] ) } は、常に地域ごとの総売上高になります。 FIXED ステートメントを追加すると、Tableau に SUM() の計算方法が通知されます。これにより、それが属している地域の総売上高に基づいて各レコードをグループ化する方法が Tableau に通知されます。

 

詳細情報

Tableau でディメンションとメジャーを使用する理由

Tableau では、データの表示方法に関する賢明な意思決定を行うために、大きく異なるデータ ソース間で共有されるデータの共通プロパティを利用します。

たとえば、あるデータ ソースに数値を含むフィールドが含まれているにもかかわらず、その名前が "ID" であるとします。  行シェルフに "ID" を追加すると、すべての ID 値を合計した意味のない棒グラフが取得されるのではなく、各 ID の行が取得されます。  Tableau では、これをどのように認識するのでしょうか。  "ID" という名前のフィールドは、既定でディメンションと見なされる特殊なケースです。

ディメンションには他のデータをグループ化するために使用されるデータが含まれているため、Tableau では、そのディメンションに数値データが含まれている場合でも、ディメンションが一般にはグラフではなくヘッダーであると認識します。 

ディメンションメジャーは、Tableau にデータの表示方法に関するヒントを提供するデータ管理の概念です。Tableau でディメンションとメジャーを処理する方法の詳細については、「ディメンションとメジャー、青と緑」を参照してください。

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