データセットの結合句を一致させない場合の懸念について

①売上目標値のデータセット(CSV)と、
②売上実績のデータセット(CSV)を
Quicksight上で結合させる場合、必ず一致しない結合句でfull結合をした場合の懸念点をご教示いただけますでしょうか。

具体的には以下の形です。
①売上目標
A列:年度、B列:年月、Ⅽ列:担当者、D列:目標金額
1行目:2024年度、2024年10月、田中、100
2行目:2024年度、2024年11月、田中、200
3行目:・・・

②売上実績
A列:年度、B列:年月、Ⅽ列:担当者、D列:実績金額、E列;顧客
1行目:2024年度、2024年10月、田中、100、顧客A
2行目:2024年度、2024年10月、田中、500、顧客B
3行目:2024年度、2024年10月、田中、800、顧客C

これを、①ー②の並びで結合句を①年度、②担当者といった具合に必ず一致しない結合句でfull結合をした場合、2つのデータセットの列が重複しないデータセットが出来上がります。

ここから、分析でビジュアル(ピボット)を作成するにあたり、①の年度情報を列に設置しても、「2024年度」と、「null」(②の年度)の2列が表示されてしまいます。

これを回避するため、以下計算フィールドを設定します。
ifelse( isnotnull(年度①)=TRUE,年度① , isnotnull(年度②)=TRUE,年度② , null)
とすれば、①と②の年度情報がいずれも表示されるフィールド(カラム)が完成します。

このカラムを軸に、目標と実績を同じレコードに並べることができますが、このように、不一致の結合句でfull結合し、上記の計算フィールドで必要な列を設定していく方法を取る場合の懸念点・注意点があればご教示いただけますでしょうか。

ご質問ありがとうございます。以下のようなイメージであってますでしょうか?

担当者全員が必ず目標金額を設定する前提であれば、Left結合が素直なやり方かと思いますが、目標金額が無くても実績金額が発生する担当者がいるということであれば、ご指摘の方法で問題ないと思います。

うまくいかないと心配されているケースがあれば、具体的に教えて頂けるとアドバイスできるかもしれません。

早速ありがとうございます。
提示いただいたイメージ図ではなく、添付2枚目のイメージです。
(添付できることを知らず、文字でのお伝えとなり失礼しました)

この結合を行ったうえで、【計算フィールドを追加】から右端にある「【作成】年度統一」を作成しています(前述のifelseとisnotnull)。
これで、すべてのレコードに年度を表示するフィールドを作成することを考えています(その他にも担当や年月も)。
その状態で分析作成時に考えらる懸念点があればご教示をいただきたい、という旨が質問の意図となります。

恐らくは、ご提示いただいた通り、結合句を一致させ、10月・田中の目標と実績を同一レコード内に表示することがスタンダードな結合かと存じます。しかし、その場合目標値が重複するため分析側でmax関数等での調整が必要となりますので、よりシンプルに分析を作成するにあたって、上述のような結合方式でも有効であるのか、確認をしたかった次第です。


ご連絡ありがとうございます。
私の提示した結合方法でピポットテーブルを作る際、目標金額が合計だと重複した分、数が増えてしまうということだと思いますが、ビジュアルの集計で最大値(集計範囲の値が同じなら、最小値でも平均値でも結果は一緒)を選択することで、重複を避けることができます。

yo.oyさんの指定された結合方法は、テーブルで見た時に、担当者&年月で複数レコードあり、目標が入ったレコードには必ず実績が入っておらず、実績が入ったレコードにも目標が入っていないため、レコード単位での処理が必要になった場合、面倒そうだなと感じました。
例えば、担当者&年月単位で、目標金額と実績金額の差分を計算フィールドで定義する等。

いずれにしても、やりたいこと次第かなと感じました。
以上、ご参考になれば幸いです。

ご丁寧にありがとうございます。

ビジュアルの集計で最大値表示は可能であること承知しておりますが、重複した状態で目標vs実績の差分や比率を算出する際、目標をmax(min)関数等で表示調整する必要がある認識です。
更に、年度等を軸に合計を表示する場合に集計粒度(LAC)の指定が必須となりますが、データやフィールドが多くなるほど指定条件が複雑で難解になることを危惧しておりました。
やりたいことを事前にお伝えしておらず申し訳ございませんでした。

ご指摘の「目標が入ったレコードには必ず実績が入っておらず、実績が入ったレコードにも目標が入っていない」につきましては仰る通りです。これを、前述のifelseとisnotnullの組合せで年度を統一するフィールドを使えばクリアできるかと想定しております。
添付キャプチャを参照願います。

「やりたいこと次第」であることは仰る通りかと感じますが、改めて、上記内容・添付キャプチャを確認いただき、見解をいただけますと幸いです。

@yo.oy
横から失礼いたします。
予実のデータ分析を行う場合、一般的には横方向の結合ではなく、縦方向の結合を利用して
予実のデータセットを作るケースが多いです。

例えば、以下のようなデータであれば、

①売上目標

年度 年月 担当者 目標金額
2024年度 2024年11月 田中 200
2024年度 2024年10月 田中 100

②売上実績

年度 年月 担当者 実績金額 顧客
2024年度 2024年10月 田中 100 顧客A
2024年度 2024年10月 田中 500 顧客B
2024年度 2024年10月 田中 800 顧客C

次のようなデータセットを作成します。

年度 年月 担当者 金額 顧客 カテゴリ
2024年度 2024年11月 田中 200 目標
2024年度 2024年10月 田中 100 目標
2024年度 2024年10月 田中 100 顧客A 実績
2024年度 2024年10月 田中 500 顧客B 実績
2024年度 2024年10月 田中 800 顧客C 実績

こうすることで、年月、担当のNULLが無くなり、カテゴリを色などで表現頂くことで、
担当毎の予実の可視化もしやすくなります。

例①

例②

また、カテゴリというディメンションで目標と実績のラベルを付与する形になったので、それぞれメジャーとして取り出したい場合には、個別で計算フィールドを作成します。

実績金額

ifelse(カテゴリ='実績',金額,0)

目標金額

ifelse(カテゴリ='目標',金額,0)

目標vs実績

実績金額-目標金額

例③

以上、ご確認よろしくお願いいたします。

1 Like

ご返信いただきありがとうございます。

添付いただいたキャプチャの箇所を実現するために、目標CSV、売上CSVをどのように結合すればよろしいでしょうか?

私が確認した限りでは、添付いただいたような縦方向の結合はquicksight上では難しいので、一致しない結合句をfull結合し、先述したifelseとisnotnullの組合せで縦方向に結合したような計算フィールドを設定する必要があると考えていました。
なお、quicksightにアップロードする前に2つのCSVを1シートに纏める作業はしない前提で、あくまでquicksight上で添付キャプチャの結合を実現する方法を把握したく、ご質問させていただいております。

何度も恐れ入りますが、ご教示いただけますと幸いです。

@yo.yo

このような予実のデータ構造であれば、一般的にはUNION(縦結合)になりますね。ただ、ご認識通り、QuickSightのデータ準備では現時点ではサポートされていません。お客様からの要望も多いため、今後サポートしていく可能性もあり、Featureリクエストとしてタグ付けさせていただきます。

JOINで実現する場合は、データの利用要件を明確にして実現可能かどうかをみていく必要があると思います。お役に立てずに申し訳ありません。

今回QuickSightにアップロードする前に結合する作業は考慮しない、とご教示いただいていますが、来週Learning SeriesでGlueを使用したデータ準備について、ウェビナーを開催します。一応。ご参考までに。

ありがとうございます。

私の質問に対しては、要件に応じて実現可能か検証を重ねていく必要があるという旨で理解いたしました。

恥ずかしながらUNION(縦結合)という言葉を初めて伺いましたが、是非ともQuickSightのデータ準備でサポートいただけるよう、ご検討のほどよろしくお願いいたします。

1 Like