よくある課題
Salesforceを導入したけどうまく使えていない
Tableauを活用できる人材を増やしたい
AIを使ってSalesforce活用に関する悩みを解決したい
コラム詳細
はじめに
セラクCCCのSalesforce推進部Tableau担当のUです。
FIXED関数はうまく活用することで、データ可視化を効率化し、表現の幅を広げる便利な機能ですが、一方で「初心者の壁」と表現される場合も多く、慣れないうちは「便利だと聞くけど難しそう」と身構えがちなテーマです。
そこで本記事では、Tableauの基本的な操作を覚えた初心者ユーザ向けに、FIXED関数の基礎知識と使い方をご紹介します。FIXED関数をはじめとしたLOD表現に関する情報量は多く整理も大変ですが、決して基礎は難しくないため、頻度の高い使い方から少しずつ覚えてみましょう。
FIXED関数は、LOD表現と呼ばれる機能の1つです。
そのため、FIXED関数について深掘りする前に、まずLOD表現全般に関する基礎を把握しておくと、スムーズにFIXED関数について整理できます。
LOD(Level of Detail)は日本語で「詳細レベル」と訳され、「粒度」と表現される場合もあります。「データのLOD」とは、そのデータが「どの大きさの単位でまとめられているか」です。
Tableau Desktopでは、グラフ作成時に、「列」や「行」に指定した切り口 や「マークの色」にドロップした切り口によって、LODが自動的に調整されます。
そのため、項目間に相関があるかどうかを調べる際には、必要に応じてグラフのLODを変更することが求められます。
<データのLOD(粒度)>
LODという概念は抽象的でイメージしにくいため、分析の際に利用するデータを具体的に想像すると理解しやすいでしょう。
たとえば、住所のLODは最小単位が「レコード1件」であり、「市町村」「都道府県」「地域」の順に粒度は粗くなり、
取引担当のLODは「営業担当者個人」「部署」「全社」へと変化します。
また、時間のLODは「1日」「1週間」「1ヶ月 」「1年」「すべての期間」へと広がります。
このように、すべてのデータにはLODがあり、データ分析の際に考える必要があります。
<データのLOD(粒度)の例>
Tableauには「LOD表現(詳細レベル表現)」という機能があり、集計時にLODを指定できます。
LOD表現は、「FIXED」「INCLUDE」「EXCLUDE」という3種類の関数で構成されています。
Fixは「固定する」という意味を持ち、FIXED関数はグラフ使用している列や行の粒度とは関係なく、「LOD」を計算時に指定できる関数です。
Includeは「含む」、Excludeは「除外する」という意味があります。
INCLUDE関数は「グラフより細かい粒度」で計算を行い、項目を追加してLODを変更します。
一方、EXCLUDE関数はそれぞれ「グラフより粗い粒度」で計算を行い、項目を除外してLODを変更します。
FIXED関数はLOD表現を構成するほかの2つの関数と異なり作成しているグラフ全体から独立した粒度を設定できます。
これにより、作成中のグラフ全体とは独立した集計が可能となり、直感的に操作しやすいという特徴があります。
FIXED関数 | INCLUDE関数 | EXCLUDE関数 | |
機能 | LODを任意の値に固定して計算する | グラフに指定した項目を加えて計算する | グラフから指定した項目を除外して計算する |
粒度の変え方 | 粗くすることも細かくすることも可能 | 細かくする | 粗くする |
Tableauでは、データの粒度を変更するために集計関数が用意されていますが、仕様の都合上、異なる粒度のデータを単独で同時に表示するのは苦手です。
FIXED関数を集計関数と一緒に利用することでこの問題を解決し、Tableauで作成したグラフの表示をフィルターで変更する際や、全体と任意の一部の割合を比較する際に、望まない部分へのフィルターの影響を防げます。
Tableau Desktop内部での処理において、FIXED関数がどのように機能するかを理解するためには、FIXED関数、集計関数、そしてフィルターのそれぞれの関係を考えることが重要です。
グラフに最初に適用されるのがコンテキストフィルターです。
コンテキストフィルターはFIXED関数や集計関数、ディメンションフィルター、メジャーフィルター よりも先に処理され、FIXED関数を使った計算結果を含むグラフの表示全体にを及ぼします。
FIXED関数はコンテキストフィルターの次に適用されますが、この際に注意したいのは「FIXED関数がデータソースを直接参照しない」という点です。FIXED関数をはじめとしたLOD表現は、データソースから「中間テーブル」を作成して参照します。
このため、FIXED関数を利用した計算結果は、後に適用される集計関数やディメンションフィルター、メジャーフィルターの影響を受けません。
ディメンションフィルターとメジャーフィルターは、グラフに表示されている「αごとのβ」のαとβそれぞれの項目に対して適応されます。
これらのフィルターは、FIXED関数による計算結果には影響を与えません。
一方で、集計関数を利用した計算式はデータソースを直接参照しており、かつ2個のフィルターの後に適用されるため、フィルターの影響を受けます。
FIXED関数を使用することで、データソースを参照する情報だけでなく、中間テーブルを参照して独立したLOD情報をグラフに同時に表示できる、とも表現できます。
<FIXED関数の処理モデル>
FIXED関数は「粒度の指定」に利用する関数のため、ほかの関数で「何をどのように集計するか」を指定することが必要です。
以下に、FIXED関数を用いた計算式の書き方や共に使うことが多い集計関数をご紹介します。
FIXED関数を利用するためには、計算フィールドを作成して計算式を記述する必要があります。計算フィールドとは、関数とフィールド、演算子を利用した計算式を記述して、グラフ作成に使う新しいフィールドを作成するスペースです。
Tableau Desktopメニューで[分析]を選び、[計算フィールドの作成]をクリックします。
ポップアップした新しい計算フィールドに名前を付け、計算式を入力します。
完成した計算フィールドは、データソースの項目と同様にグラフ作成に利用できます。
FIXED関数を使った計算式の構造はシンプルです。FIXED以下に指定対象となる項目、「:」以下に任意の集計関数と集計する対象を記述し、全体を中括弧「{}」で囲むだけで完成します。集計関数は、合計や平均といった「該当列の値すべてを計算する関数」です。
{FIXED [任意の項目1]: 任意の集計関数([任意の項目2])}
たとえば、「αごとのβの合計値」は以下のように記述できます。指定対象の項目が「α」で、集計式は「β」をSUM関数で合計する構造です。
{FIXED [α]: SUM([β])}
FIXED関数を効果的に活用するためには、ほかの集計関数と組み合わせる知識も重要です。
参考に、FIXED関数と一緒に使われることが多い集計関数を紹介します。
FIXED関数の計算フィールドをグラフ上にドロップした際には、自動でSUMを利用した計算式が作成されるため、必要に応じて集計関数を選びましょう。
・{FIXED [α]: SUM([β])}
SUMは「αごとのβ の合計値」を求める関数です。
たとえば、「取引の日付ごとの営業利益」を計算すれば、毎日の利益に関するKPIを可視化できます。
・{FIXED [α]: COUNTD([β])}
COUNTDは「αごとのβの個数」を求める関数です。COUNT関数と異なり、重複するβを削除してユニークな値を数えます。
たとえば、「顧客ごとの購入レコードの個数」を計算すれば、顧客のリピート率が分かります。
・{FIXED [α]:MIN([β])}
MINは「αごとのβの最小値」を求める関数です。
たとえば、「顧客ごとの最初の取引日 」を計算して取引開始の時期を計算すれば、顧客データを取引開始時期で分類できます。ほかにも、「顧客ごとの最初の取引日」から顧客獲得数の時間的推移を可視化できます。
・{FIXED [α]:MAX([β])}
MAXは「αごとのβの最大値」を求める関数です。
たとえば、「顧客ごとの直近の取引日」を計算して取引頻度と合計取引金額といった指標と組み合わせれば、顧客を分類してカテゴリごとに適切なアプローチを選択できます。
・{FIXED [α]:AVG([β])}
AVGは「αごとのβの平均値」を求める関数です。
たとえば、「顧客ごとの平均売上」と「顧客全体の平均売上」を製品やサービスごとに比較して、相関を分かりやすく可視化できます。
利用される頻度が高い、FIXED関数を使った可視化の例をご紹介します。
コホート分析(Cohort Analysis)とは、データを任意の条件でまとめ、時間的な変化を分析する手法です。
たとえば、マーケティングで、キャンペーン効果やECサイト再訪率を可視化する際に用いられます。
下記のような式で顧客データごとに最初の活動日を計算できます。
実施していたキャンペーン期間に対応する分かりやすい粒度で「最初の活動日」をグループにまとめ、任意期間の売上合計に対してグループごとの売上割合を求めれば、効果的なキャンペーンを把握可能です。
{FIXED [顧客ID]: MIN([活動日])}
次に、下記の式で最初の取引日からの経過期間を求め、どれくらいの期間が経過した後のリピート率が高いかを可視化して、効果的な宣伝タイミングについてデータに基づいて検討できます。
DATEDIFF(‘month’,[先に作成した顧客ごとの最初の取引日の計算式の名称],[取引日])
コホート分析はほかに、人事データを利用して入社からの期間で離職率を可視化するといった際にも効果的です。
Tableauでは、項目ごとの「貢献度」や「影響度」を可視化するために、項目ごとの全体に対する割合を比較する分析手法を「プロポーショナルブラッシング」と呼びます。
全体に対する各項目の割合を表現する際には、積み上げ棒グラフが効果的です。このグラフを使うことで、各項目が全体に対してどの程度寄与しているかを視覚的に示すことができます。
また、割合上位の項目に焦点を当てたい場合には、ツリーマップが有効です。ツリーマップでは、項目の相対的な大きさや関係性を視覚的に表現できます。
しかし、これらの方法は任意の項目に絞り込んで分析を進めるのにはあまり向いていません。
また、単にフィルターを使って選択する項目を動的に変更すると、全体の値がフィルターに連動してしまう場合があります。この問題を防ぐためには、FIXED関数を使って全体の値を常に表示する計算式を作成しておくことが重要です。
たとえば、地域ごとに「全体売上」とフィルターで動的に変更できる「任意の製品グループの売上」を可視化する場合で考えてみましょう。
「全体売上」を表現する際に、以下のようにFIXED関数を利用できます。任意の製品グループと全体売上で二重軸の棒グラフを作成すると、フィルターで「任意の製品グループの売上」だけを操作して、製品グループごと地域ごとの相関を直感的に分かりやすく可視化できます。
{FIXED [地域] : SUM([売上])}
FIIXED関数は非常に用途が広いため、利用の機会を増やすためにも、関連知識をしっかりと抑えることも重要です。
以下に、FIXED関数を効果的に利用するためのポイントを紹介します。
FIXED関数の後に「,(カンマ)」で区切って記述すると、複数の対象を指定できます。
たとえば、「月ごと」かつ「都道府県ごと」の合計売上を求める以下の計算式のように、粒度を固定したい内容が複数であっても、式全体の構造は変わりません。
{FIXED [都道府県],DATETRUNC(“month”,[取引日]):SUM([売上])}
FIXED関数を含むLOD表現では、式中に別のLOD表現を利用して、集計値を集計できます。
この入れ子構造になっているLOD計算は、Nested LOD(ネストLOD)とも呼ばれ、グラフ上に表示される情報を増やさずに必要な計算結果を表示できるため有用です。
たとえば、以下の計算式では、「地域ごと」の売上合計の集計値を対象にして、さらに最大値を求める計算を追加しており、結果として「地域ごとの売上合計の最大値」だけを表示できます。
{FIXED : MAX( {FIXED [地域]: SUM([売上])})}
{FIXED [地域]: SUM([売上])} の部分では、それぞれの地域ごとに売上が合計されます。{FIXED : MAX(…)}の部分では、FIXEDの後ろに範囲のキーワードを使用していないため、データセットのテーブル全体の集計として処理されます。
「IF~THEN」と組み合わせると、可視化の際に粒度を固定するだけでなく、条件でデータを絞り込めます。
たとえば、以下のように売上が5,000,000以上の顧客数をカウントする計算式を行に、営業所を列に設定すれば、売上5,000,000以上の顧客数を営業所ごとに比較できます。
COUNT(IF {FIXED[顧客 Id]:SUM([売上])}>5000000 THEN 1 END)
また、IF関数と組み合わせる際には、FIXED関数に「集計」と「非集計」を変化させる機能があることにも留意しましょう。
IF関数を使って計算結果を条件分岐させたい場合、「集計」と「非集計」を混在させることはできないという仕様があります。
具体的には、LOD表現を使った式は「非集計」として扱われますが、LOD表現を使った式全体を集計関数で囲むと「集計」として扱われます。
そのため、単純に計算式にFIXED関数を組み込むと、エラーが発生する可能性があります。
2021年に「クイックLOD」という新機能がTableauに追加されました。
この機能を使うことで、計算式を入力せずにFIXED関数を利用した計算式を簡単に作成することができます。
クイックLODはSUMを集計関数として自動的に利用しますが、ほかの集計関数を使いたい場合は、新しい計算フィールドを右クリックして編集することが必要です。
「αごとのβの合計値」を求める{FIXED [α]: SUM([β])}を例に、クイックLODの2通りの作成方法を見ていきましょう。
方法1:グラフに利用する複数の項目を選択して開始する
1.グラフに使いたい項目αと項目βをデータペイン上でCtrlを押しながら選択します。
2.右クリックして「作成」→「LOD計算」を選択します。
3.すると、{FIXED [α]: SUM([β])}が記述された計算フィールドがポップアップします。
この方法は、グラフ作成前でもグラフ作成後でも利用できます。
方法2 :グラフ作成前に、選択した項目から開始する
1.集計したい項目βをCtrlを押しながらクリックし、項目αにドラッグします。
2.すると、{FIXED [α]: SUM([β])}が記述された計算フィールドが新しい項目として表示されます。
これらの方法を使うことで、簡単にFIXED関数を用いた計算を行うことができ、効率的にデータ分析を進めることができます。
『Tableau Prep Builder』を使用してデータクリーニングを行う際には、FIXED関数を使って可視化で役立つ項目を事前に作成することもできます。
『Tableau Desktop』でデータを可視化する際にFIXED関数を使用する場合と比較して、いくつかのメリットがあります。
まず、データ分析中のマシンへの負荷を軽減できます。Tableau Prepで事前に計算を行うことで、リアルタイムでの計算負担を減らし、システムリソースの消耗を抑えることができます。
また、処理フローを保存して複製することで、作業を効率化し、一貫したデータ処理を実現できます。
しかし、注意が必要な点もあります。
Tableau Prep BuilderではFIXED関数は利用できますが、同じLOD表現の「INCLUDE」や「EXCLUDE」関数は使用できません。
また、入れ子構造のLOD表現もサポートされていないため、複雑なLOD計算が必要な場合は、Tableau Desktopで行う必要があります。
まとめ
FIXED関数をはじめとしたLOD表現を使うことで、Tableauでのデータ可視化作業を効率化できます。
ただ、LOD表現を使いこなすためには、ほかの集計関数や計算式に関する知識を含む体系的な理解が不可欠です。
学習に時間をかけるのが難しく、実務ですぐにFIXED関数を活用したいといった場合は、ぜひ、お気軽にご相談ください。
当社には約400名(25年4月時点)のSalesforce/Tableau専門コンサルタントが在籍し、実践ワークショップ型の人材育成や導入支援サービスを提供しています。
Salesforceでお悩みなら、
まずはお気軽に
お問い合わせください
この記事の執筆者
株式会社セラクCCC
株式会社セラクCCCは、Salesforceをはじめとするクラウドシステムの定着・活用支援を担うカスタマーサクセス企業です。
Salesforce Navigator プログラムの【Managed Services】分野のExpert認定の詳細はこちら
当社は、セラク(東証スタンダード上場)のグループ会社です。
Salesforceでお悩みなら、
まずはお気軽に
お問い合わせください