メインコンテンツへスキップ

はじめに

このガイドでは、集計Beast Modeで非集計列を使用する方法を紹介します。 集計Beast Modeに非集計列を適用する場合は、SQLについて基本レベルから中級レベルの知識と Domoサポート へのアクセス権を持っていることが理想的です。

GROUP BY関数を使用する

SELECT ステートメントで、集計された関数と非集計列を使用するSQLクエリを作成する場合、すべての非集計列をクエリの GROUP BY ステートメントに含めるする必要があります。 以下のDataSetには、顧客による個々の売上のレコードが含まれています。「Customer ID」列には顧客ごとに一意の識別子が含まれ、「Ship Mode」列には「Second Class」と「Standard Class」の2つの値が含まれます。「Sales」列には、注文時に各顧客に販売された金額が含まれます。

Order ID

Customer ID

Ship Mode

Sales

1

CG-12520

Second Class

261.98

2

CG-12520

Second Class

731.94

3

DV-13045

Second Class

14.62

4

SO-20335

Standard Class

957.5775

5

SO-20335

Standard Class

22.368

6

BH-11710

Standard Class

48.86

7

BH-11710

Standard Class

7.28

8

BH-11710

Standard Class

907.152

9

BH-11710

Second Class

18.504

10

BH-11710

Second Class

114.9

11

BH-11710

Standard Class

1706.184

12

BH-11710

Standard Class

911.424

13

AA-10480

Standard Class

15.552

14

IM-15070

Standard Class

407.976

15

HP-14815

Standard Class

68.81

16

HP-14815

Standard Class

2.544

17

PK-19075

Standard Class

665.88

18

AG-10270

Second Class

5.55

この表を使用し、Beast Modeの結果のみを示す単一値チャートを作成できます(「Sales」列を合計した「Total Sales」列)。 このチャートを求めるクエリの形式は、以下のようになります。
この例では、 SELECT ステートメントの値のみが、集計Beast Modeの「Total Sales」です。非集計列はないため、 GROUP BY ステートメントは不要です。 「Ship Mode」別の「Total Sales」Beast Modeの棒グラフを作成する場合、「Ship Mode」ごとに「Total Sales」を取得する必要があります。それが以下のクエリになります。
SELECT ステートメントには、集計Beast Mode、「Total Sales」、および非集計列「Ship Mode」が含まれます。したがって、非集計列「Ship Mode」は GROUP BY ステートメントに含まれている必要があります。
このページのトップへ

非集計列を使用する集計

非集計列を使用する集計Beast Modeの操作は難しくなりますが、以下のヒントをもとに実行することができます。 この例では、以下のBeast Mode関数を使用して、顧客別の総売上を表示するピボット表を用意しています。
これは次のクエリになります。
クエリには、 SELECT ステートメントおよび非集計列「Customer ID」の集計であるBeast Modeが含まれています。このクエリを正しく機能させるには、「Customer ID」を GROUP BY ステートメントに含める必要があります。 この例では、「Standard Class」を使用して出荷された注文は、「Second Class」を使用して出荷された注文よりも10%高くなります。チャートを作成するときは、「Standard Class」を使用した総売上を10%削減する必要があります。これを行うには、「Total Sales」Beast Modeを変更して、この出荷モードを使用して売上を10%削減します。 更新されたBeast Modeは、以下のようになります。
このBeast Modeは、集計と見なされます。なぜなら、 WHEN 節ごとの THEN ステートメントでは、集計関数 SUM を使用するためです。「Ship Mode」関数は非集計であるため、クエリを再構築する場合、ピボットテーブルは次のようになります。
「Ship Mode」列は、 SELECT ステートメントでは直接使用されませんが、非集計フォームでは、Beast Modeの「Total Sales」を通じて SELECT ステートメントで使用されます。このクエリを機能させるには、「Ship Mode」列を GROUP BY ステートメントに含める必要があります。 ピボットテーブルは次のようになります。
線を含む白いシート、説明は自動生成
ピボットテーブルのデータには、「Customer ID」BH-11710が「Total Sales」列のエラーとともに表示されます。このエラーは、顧客が2つの異なる「Ship Mode」値を注文で使用しているために発生したものです。「Standard Class」と「Second Class」の両方の値があるため、結果の出力には2行が含まれています。これがエラーの原因になります。なぜなら、ピボットテーブルでは2行ではなく1行が想定されているためです。 「Ship Mode」列は、 SELECT ステートメントに含まれていないため、表示されません。テーブルを表示している他のユーザーは、「Ship Mode」に入る値を把握していません。また、顧客ごとの実際の「Total Sales」を確認することもできません。 このページのトップへ

表の総計行と小計行

ピボットテーブルの「Grand Total」行には、すべての顧客の実際の「Total Sales」値を取得できる2番目のクエリが含まれている必要があります。通常、「合計」行を計算する場合、クエリから特定の列を削除しますが、この場合はメインクエリを使用して「Customer ID」を削除します。Beast Modeは非集計列を使用するため、 GROUP BY ステートメントに追加する必要があります。 「Customer ID」列を削除する場合、次のクエリを使用できます。
このクエリでは、すべての顧客の「Total Sales」を取得します。ただし、このBeast Modeは非集計列を使用するため、 GROUP BY ステートメントにその列を含める必要があります。 このクエリでは、次の2行のデータが生成されます。

Total Sales

1197.424

5721.6075

2つの行には、「Ship Mode」の値ごとに合計が1つずつ含まれています。合計行の値には、両方の値を合計した行が必要です。この値を取得して行を合計するには、元のクエリをサブクエリに入れる必要があります
このクエリは、「Customer ID」および「Ship Mode」ごとに複数の行が存在する可能性に備えた形式になっているため、テーブル全体のクエリを実行し、サブクエリに配置して、サブクエリに基づいて SUM を計算する必要があります。 このページのトップへ 日本語