こんにちは!Analytics EngineerのJadenです。
データ分析が初めての方なら一度はこのような経験をしたことがあると思います。頑張ってデータを収集し、ExcelやSQLで一生懸命数字を足して平均を算出してみたのに...。いざ上司に報告しようとしたら、何だか前後が合わないような気がするし、何かがおかしい気がするんですよね。
実はこのような問題の根本的な原因は「メジャー(Measure)のタイプ」に対する理解不足から始まります。
メジャー、つまり私たちが分析したい指標には大きく2つのタイプがあり、あるものは合算しても問題ないもの、あるものは合算してはいけないものがあります。
この2つのタイプを「加法メジャー (Additive Measures)」と「非加法メジャー (Non-Additive Measures)」と呼びます。
加法メジャーは文字通り加算してもいいメジャーであるのに対し、非加法メジャーは加算してはいけないメジャーです。
今回のブログでは、この加法メジャーと非加法メジャーについて詳しく説明します。単なる概念の説明だけでなく、実際のビジネス事例とSQLクエリの例を一緒に見ていきたいと思います。
1.データモデリング時にメジャーのタイプによる考慮事項を知りたいデータエンジニアやBI開発者
2.データ分析を始めたばかりで、基本的な概念を固めたいジュニアデータアナリスト
3.データに基づく意思決定をしたいが、どのような指標をどのように活用すべきか悩んでいる中小企業のマネージャー
1.加法メジャー (Additive Measures)
加法メジャーは、複数のディメンションに渡って合計が可能な値を指します。
簡単に言うと、各コンポーネントを加算した時に全体の合計が意味をもつ場合を意味します。一般的にビジネスで最も多く扱うメジャーのタイプでもあります。
売上金額(Sales Amount)、注文数量(Order Quantity)、費用(Cost), 収益(Revenue)、利益(Profit)などが代表的な例です。
例1: Eコマースの売上分析
Eコマース企業のA社は日次単位、製品カテゴリー(Product Category)単位で売上金額(Sales Amount)を加法メジャーで管理しています。
Date | Product Category | Sales Amount |
---|---|---|
6/1 | Clothing | 10,000,000 |
6/1 | Electronics | 15,000,000 |
6/1 | Books | 5,000,000 |
6/2 | Clothing | 12,000,000 |
6/2 | Electronics | 18,000,000 |
6/2 | Books | 8,000,000 |
この場合、6/1と6/2の両日の合計の売上は各製品カテゴリー別の日次の売上を合算して簡単に求めることができます。
SELECT SUM(Sales_Amount) AS Total_Sales
FROM Sales_Data
WHERE Date IN ('6/1', '6/2');
- 6/1と6/2の2日間の合計売上 = 10,000,000 + 15,000,000 + 5,000,000 + 12,000,000 + 18,000,000 + 8,000,000 = 68,000,000
それだけでなく、製品カテゴリーのディメンションでも合算が可能です。
SELECT Product_Category, SUM(Sales_Amount) AS Category_Sales
FROM Sales_Data
WHERE Date IN ('6/1', '6/2')
GROUP BY Product_Category;
- Clothingカテゴリーの合計売上 = 10,000,000 + 12,000,000 = 22,000,000
- Electronicsカテゴリーの合計売上 = 15,000,000 + 18,000,000 = 33,000,000
- Booksカテゴリーの合計売上 = 5,000,000 + 8,000,000 = 13,000,000
このように加法メジャーを活用すれば、時間、カテゴリーなど様々なディメンションでの売上の現状や推移を簡単に把握することができます。
また、このように集計されたデータは、追加の分析、例えば、日別の平均売上の推移やカテゴリー別売上の割合の変化などを確認するのにも活用することができます。
例2: メーカーの生産量分析
メーカーB社は、工場別、製品別の日々の生産量データを管理しています。
Date | Factory | Product | Quantity |
---|---|---|---|
7/1 | A | P1 | 1,000 |
7/1 | A | P2 | 1,500 |
7/1 | B | P1 | 800 |
7/2 | A | P1 | 1,200 |
7/2 | A | P2 | 1,800 |
7/2 | B | P1 | 1,000 |
このデータを基にして、特定の期間の生産量合計を求めることができます。
SELECT SUM(Quantity) AS Total_Production
FROM Production_Data
WHERE Date BETWEEN '7/1' AND '7/2';
- 7/1と7/2の2日間の生産量合計 = 1,000 + 1,500 + 800 + 1,200 + 1,800 + 1,000 = 7,300
また、工場別、製品別の生産量の合計も計算することができます。
SELECT Factory, Product, SUM(Quantity) AS Production_by_Factory_Product
FROM Production_Data
WHERE Date BETWEEN '7/1' AND '7/2'
GROUP BY Factory, Product;
- A工場のP1製品の生産量合計 = 1,000 + 1,200 = 2,200
- A工場のP2製品の生産量合計 = 1,500 + 1,800 = 3,300
- B工場のP1製品の生産量合計 = 800 + 1,000 = 1,800
これにより、各工場の生産能力や製品別の生産比率を把握することができます。さらに、生産計画の策定や資源配分の意思決定に活用することができます。
2.非加法メジャー (Non-Additive Measures)
非加法メジャーは、加算を適用できない値を意味します。
加算すると、その結果が現実的な意味を持ちにくい場合が多いです。代表的な例としては平均(Average)、パーセンテージ(Percentage)、比率(Ratio)、ランキング(Ranking)などが挙げられます。
例1: 顧客満足分析
B社は四半期ごとに顧客満足度調査を実施しています。
Quarter | Satisfaction Score (Out of 5) |
---|---|
1Q | 4.2 |
2Q | 3.8 |
3Q | 4.5 |
4Q | 4.1 |
この時、各四半期のスコアを単純に合計した16.6ポイントを年間の顧客満足度として解釈するのは適切ではありません。満足度のスコアの意味上、平均を出すのが合理的でしょう。
SELECT AVG(Satisfaction_Score) AS Annual_Average_Satisfaction
FROM Satisfaction_Data;
- 年間平均満足度スコア = (4.2 + 3.8 + 4.5 + 4.1) / 4 = 4.15 ポイント
ここで注目すべき点は、四半期ごとの推移を通じて改善の有無を判断することができるという事実です。第3四半期は4.5ポイントで満足度が大きく上昇しました。
この期間に実施した顧客サービスの強化政策が功を奏したと解釈することができるかもしれません。
一方、第4四半期には再び下落傾向を示しましたね。年末のピークシーズンへの対応がやや不十分だったのではないかと思います。
例2: 商品在庫回転率の分析
流通業のD社は商品別の在庫回転率をKPIとして管理しています。
Product | Inventory Turnover Ratio |
---|---|
A | 5.2 |
B | 3.8 |
C | 6.5 |
D | 4.1 |
この場合でも、商品ごとの回転率(Turnover Ratio)を合算することは意味がありません。代わりに平均を算出したり、商品間の比較分析をする方がより有用でしょう。
SELECT AVG(Turnover_Ratio) AS Average_Turnover_Ratio
FROM Inventory_Data;
- 平均在庫回転率 = (5.2 + 3.8 + 6.5 + 4.1) / 4 = 4.9
これにより、商品全体の平均的な在庫効率を把握することができます。また、商品別の回転率を比較することにより、在庫管理の優れた商品と改善が必要な商品を識別することができます。
SELECT Product, Turnover_Ratio
FROM Inventory_Data
ORDER BY Turnover_Ratio DESC;
- 在庫回転率が最も高い商品はC(6.5)
- 在庫回転率が最も低い商品はB(3.8)
これを基に商品別の発注量や在庫レベルを調整するなど、在庫最適化戦略を策定することができるでしょう。
例3: 学生の成績評価
教育機関Eは、学生の科目(Subject)別のスコア(Score)とランク(Rank)のデータを管理しています。
Student | Subject | Score | Rank |
---|---|---|---|
A | Math | 85 | 3 |
A | English | 92 | 1 |
B | Math | 90 | 2 |
B | English | 88 | 2 |
C | Math | 78 | 5 |
C | English | 85 | 4 |
ここで、スコア(Score)は加法メジャーで、加算して学生別の合計スコアを計算することができます。
SELECT Student, SUM(Score) AS Total_Score
FROM Grade_Data
GROUP BY Student;
- 学生Aの合計スコア = 85 + 92 = 177点
- 学生Bの合計スコア = 90 + 88 = 178点
- 学生Cの合計スコア = 78 + 85 = 163点
一方、ランク(Rank)は非加法メジャーで、加算はできません。代わりに、各科目別のランクを比較したり、科目別の最高/最低のランクを把握するのに活用することができます。
SELECT Subject, MIN(Rank) AS Best_Rank, MAX(Rank) AS Worst_Rank
FROM Grade_Data
GROUP BY Subject;
- Math科目の最高ランク = 2、最低ランク = 5
- English科目の最高ランク = 1、最低ランク = 4
これにより、学生ごとの強い科目や弱点科目を診断し、カスタマイズされた学習計画を策定するのに役立ちます。
まとめ
加法メジャーと非加法メジャーは、データ分析の際に必ず区別しなければならない重要な概念です。加法メジャーは複数のディメンションに渡って加算可能な値で、Sales Amount (売上金額)、Quantity (数量)などが代表的なものです。これを活用すれば、様々な基準で現状や推移を簡単に把握することができます。
一方、非加法メジャーは加算を適用できない値です。Average (平均)、Percentage (パーセンテージ)、Ratio (比率)、Ranking (ランキング)などがこれに該当します。
この場合は、平均を算出したり、個々の値間の比較分析をすることがより有意義です。
実際のビジネス状況では、この2つのタイプのメジャーが混在している場合が多いです。分析目的に合わせて適切な計算方法を適用する必要があります。