進捗率100%の完了案件を除いた累計と月次合計を表示する方法


現在、2つのビジュアルを使用しています。2つのビジュアルを使う場合は、同じ項目が入っているビジュアルを同じフィルターまたはパラメータで制御できればと考えています。

・1つ目のビジュアルでは、指定した年月までの案件を対象とし、完了日が指定月より前で、かつ進捗率が100%の案件を除外したうえで、累計の合計値を表示したいです。
・2つ目のビジュアルでは、指定した年月(1か月分)のデータのみを集計し、その月の合計値を表示したいです。

つまり、1つ目のビジュアルにおいて、画像のデータで2025年4月を選択すると、案件番号「123456789」は表示されず、案件番号「678912345」は表示されます。しかし、2025年5月を選択すると、どちらも完了日が指定月より前のため表示されません。

もともとは、前月だけの合計作業時間と、指定月までの案件の合計値を1つのビジュアル内でまとめて表示したいと考えていました。具体的には、「前月だけの合計作業時間(1項目)」と、「完了日が指定月より前で進捗率が100%の案件を除外したうえでの累計の合計値」を1つのビジュアル内で同時に表示したいというイメージです。ただし、この方法は難しそうだと感じたため、代替案として2つのビジュアルを使う方法を検討しています。

できれば、1つ目のビジュアルで実現できたらいいなと考えています。画像のテストデータには作業時間しか合計する項目がありませんが、本番データには合計する項目が複数あります。そのため、項目を計算フィールドで処理するのは厳しいと考えています。

何かアドバイスやご教示いただけると幸いです。よろしくお願いいたします。

@youpinco

ご質問ありがとうございます。

実現されたい内容は次のように理解しました。
ご認識の通り、集計内容が二つになるため、二つのビジュアルを協調動作させるイメージでの実現になるかと思います。

■理解内容

[操作]
ダッシュボード上で月度を指定 (2025/03 など)

[期待動作]

  1. ビジュアル1/指定した月度以前の未完了プロジェクトを対象に合計値を表示
    条件: 完了日が指定月度以前 + 進捗率≠100)
  2. ビジュアル2/指定した月度の全てプロジェクトを対象に合計値を表示
    条件: 指定月の全データ

[動作イメージ]

Fig.1 動作イメージ

2025/03 を指定することで…

ビジュアル1 :完了日が3月より前の案件かつ進捗100以外のデータを表示・集計
ビジュアル2:完了日が3月の案件のデータを全て表示

■実装方針

  • 入力となる明細データに計算フィールドで判定用フラグを追加
  • ユーザー指定用の月度パラメタ/コントロールを作成
  • パラメタを使用し各ビジュアルで必要なフィルタを設定

Fig.2 入力データイメージ

[Step1] 計算フィールド作成1/データセット側での作成

① 月度:フィルタで使用する YYYY/MM 形式の文字列

formatDate({完了日}, 'yyyy/MM')

[Step2] パラメタ/コントロールの作成

文字列パラメタ:pjmmdd を作成

Fig.3 パラメタの設定

pjmmdd からコントロールを作成

Fig.4 コントロールの設定

=> 計算フィールド①のデータセットフィールドにリンクすることで、データに存在する月度を選択可能に

[Step3] 計算フィールド作成2/分析側での作成

② c_評価用日付:選択された①の月度から、指定月の末日 (3/31,4/30など)を算出

addDateTime(-1, 'DD', addDateTime(1, 'MM', parseDate(concat(${pjmmdd}, '/01'), 'yyyy/MM/dd')))

③ c_指定月以前抽出:完了日と②日付を比較し、指定月以前の明細にフラグを設定

ifelse(完了日 <= {c_評価用日付}, 1, 0)

④ c_指定月行抽出:完了日と②日付を比較し、指定月の明細にフラグを設定

ifelse(
    truncDate('MM', 完了日) = truncDate('MM', {c_評価用日付}),
    1,
    0
)

[Step4] 各ビジュアルへのフィルタ設定

Fig.5 ビジュアル1 用のフィルタ

Fig.6 ビジュアル2 用のフィルタ

=> 各ビジュアルで必要なフィルタ条件を設定。
この時、「Only this visual/このビジュアルのみ」を選択する。

[Step5] 動作確認

Fig.7 コントロールによるフィルタ動作の確認

=> 指定した月度に基づき、二つのビジュアルがフィルタされていることを確認

上記、イメージと合っておりますでしょうか。ご確認頂けますと幸いです。

1 Like

ご回答ありがとうございます。
自分の認識違いがありましたので、共有させていただきます。

進捗率が100%になった日を「完了日」と定義しています。
ビジュアル1では、以下のような表示条件を実現したいと考えています。

【例:3/16に100%になった案件】

  • 2月中は「2月までの作業時間」を表示
  • 3月中は「3月までの作業時間」を表示
  • 4月は「完了済みのため表示しない」ようにしたいです。

なお、テストデータには100%になっていないのに完了日が入っていますが、実際は、100%になっていない案件の完了日はNULLです。

ご提示いただいた方法を試してみたのですが、うまくできなかったため、以下の4点について確認させていただきたいです。

1.ビジュアル1の条件について
条件: 完了日がNULLのものと完了日が指定月より後のものを表示する

2.コントロールのフィールドを選ぶ箇所で、「月度」が表示されないです。

3..c_評価日付というタイトルと ③と④の計算フィールド内にある{c_評価用日付}は、同様のものであっているという認識で間違っていないでしょうか

4.上記2の設定ができていないためだと思いますが、コントロールを追加したところ、ビジュアルがエラーで表示されない状態です。

お手数おかけいたしますが、どうぞよろしくお願いいたします。

@youpinco

ご確認ありがとうございます。
以下、ご質問の内容について回答いたします。

1.ビジュアル1の条件について
条件: 完了日がNULLのものと完了日が指定月より後のものを表示する

=> 指定月抽出の計算フィールドに OR 条件を指定することで指定可能です。

例:

ifelse(完了日 => {c_評価用日付} OR isNull(完了日), 1, 0)

2.コントロールのフィールドを選ぶ箇所で、「月度」が表示されないです。

今回の例では、[Step1] の計算フィールドについては、QuickSight のデータ準備の項目で計算フィールドを作成の上で選択頂ければと思います。

QuickSight ホーム => データセット => 指定のデータセット => データの編集 で編集画面が開きます。こちらでは、データセットへの計算フィールドを設定することができます。

計算フィールドはデータセット・分析それぞれで作成することができます。データセットで作成された計算フィールドは、分析上、他のフィールドと同じく計算済みの値となるため、コントロール等としてご利用頂く事が可能です。

3..c_評価日付というタイトルと ③と④の計算フィールド内にある{c_評価用日付}は、>同様のものであっているという認識で間違っていないでしょうか

ご認識の通りです。誤記のため修正いたします。

4.上記2の設定ができていないためだと思いますが、コントロールを追加したところ、ビジュアルがエラーで表示されない状態です。

こちら、各設定の上、お持ちのデータに合った形で調整・ご確認頂けますと幸いです。

ご回答ありがとうございます。

進捗率が100%でないデータについては、完了日をNULLとするようにデータを調整しました。
質問1については、c_指定月以前抽出の計算フィールドを、画像の通りの式で作成しています。

質問2については、月次の選択ができるようになりました。
質問3については解決いたしました。ありがとうございます。
質問4については、依然としてビジュアルにエラーが表示される状況です。


お手数をおかけしますが、ご確認のほどよろしくお願いいたします。

@youpinco

ご確認ありがとうございます。
こちら、計算フィールド上で"年月"を使用しており、該当の計算式で全て/NULL の場合の処理を考慮していないため、コントロールで特定の年月を指定して頂けるとデータが表示されるかと思います。

今回、完了日は必ずしも値が入るわけではないとのことですので、コントロール自体の値は個別に作成すると NULL などの値が入らないので良いかもしれません。

以下、参考情報を記載いたしますのであわせてご確認ください。

ご参考:コントロールの設定

ご参考:ダッシュボードイメージ(QuickSight Arena)
44760_parameter_usage_sample_dashboard

上記、よろしくお願いいたします。

ご回答ありがとうございます。
度々申し訳ございませんが、2点ご確認したく思います。

①「月度」フィールドの確認
作成した「月度」フィールドは必要ないということでよろしいでしょうか?

②フィルターの確認
コントロールで年月を入力し、再度試してみました。以下、現在の状況です。

テストデータには、3月および4月に完了日が設定されている案件が含まれています。
しかし、3月を選択しても3月に完了した案件は表示されず、4月に完了した案件も同様に表示されません。
また、2月を選択した場合も、完了済みの案件が一切表示されない状況です。



先日もお伝えしましたが、下記のような表示が理想です:

【例:3/16に進捗率100%となった案件】

2月:2月までの作業時間を表示
3月:3月までの作業時間を表示
4月以降:完了済みのため非表示

現在のフィルター設定では、「進捗率が100と等しくないもの」が除外されるようになっており、この条件が影響しているのではないかと考えています。
フィルターの設定内容を画像で添付させていただきますので、お手数ですが、ご確認いただけますと幸いです。


設定に誤りがあればご教示いただけますと幸いです。どうぞよろしくお願いいたします。

@youpinco

ご確認ありがとうございます。

①「月度」フィールドの確認
作成した「月度」フィールドは必要ないということでよろしいでしょうか?

=> ご認識の通りです。

② 表示条件について

=> 各種条件について確認させてください。

記載いただいている内容ですが、絞り込みの際には作業日をフィルタ条件にする必要はないでしょうか?私の方で使用しているデータがあくまで想定で作成したテスト用であり、完了日の NULL 条件、作業日他項目との整合など、データ仕様が不整合のため、ご要望の条件を再現することが難しい状況です。

大変お手数ではございますが、具体的な条件 (作業日 < 入力パラメタ & 完了日 = NULLなど) を教えて頂くとともに、下記 QuickSight Arena にテストデータをアップロードの上で URL をシェア頂けますとご想定のデータをもとにこちらでも確認ができるかと思います。

ご参考 QuickSight Arena

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

ご回答ありがとうございます。

QuickSight Arenaにてアップロードさせていただきましたので、ご確認お願い致します。

TEST

1 Like

@youpinco

サンプルのアップロードありがとうございます。

こちら、頂いた情報をもとに計算フィールドを補正しました。

データおよびご希望の動作を拝見すると、完了日は案件単位、作業時間は明細単位の保持項目のため、作業時間をベースとしたフィルタ + 完了日をベースとしたフィルタの二種を組み合わせる形にしております。

■計算フィールド

c_作業日:指定月以前抽出

ifelse(作業日 <= {c_評価用日付}, 1, 0)

c_完了日:指定月以外完了案件除外

ifelse(truncDate('MM', 完了日) >= truncDate('MM', {c_評価用日付}) OR isNull(完了日), 1, 0)

■ダッシュボードイメージ
44760_filter_sample

■動作イメージ

2月:作業日が2月までの作業時間を表示


=> 作業日が 2月のデータがないためデータなし

3月:作業日が3月までの作業時間を表示


=> 作業日が 3月以前の明細を表示
=> 3月完了案件は指定月が完了月のため表示される

4月:作業日が4月までの作業時間を表示


=> 3月完了案件は前月以前に完了済のため非表示
=> 4月完了案件は指定月が完了月のため表示される

5月:作業日が5月までの作業時間を表示


=> 3月/4月完了案件は前月以前に完了済のため非表示

こちらの設定により、ご要望の内容を満たす動作になっているかと思います。
(完了日が NULL の未完了明細は常に表示されるようにしております)

【例:3/16に進捗率100%となった案件】
2月:2月までの作業時間を表示
=> 2月を指定した場合、2月までの作業日の明細を合計
3月:3月までの作業時間を表示
=> 3月を指定した場合、3月までの作業日の明細を合計
4月以降:完了済みのため非表示
=> 4月以降を指定した場合、完了日が 3月以前のため非表示

本件、内容ご確認の上、必要に応じ計算式など調整を頂けますと幸いです。

1 Like