QuickSightのビジュアルタイプ「テーブル」で重複したレコードをまとめる方法を考えてみた

QuickSightのビジュアルタイプである「テーブル」で、重複したレコードをQuickSight上でまとめることができるか調査してみた
2023.04.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、洲崎です。
QuickSightのビジュアルタイプである「テーブル」で、重複したレコードをQuickSight上でまとめる方法を考えてみたので共有します。

重複しているレコードを1つにまとめて表示させたい

Amazon Connect→Amazon Kinesis Data Firehose→S3でAmazon ConnectのCTR(問い合わせレコードデータモデル)を出力しています。
ある理由で、Data Firehoseを再作成しようと考えており、一時的にData Firehoseを二重化することにしたのですが、CTRデータが重複してしまうことが懸念として残りました。
CTRデータはContactIdが一意のデータだった為、そこを前処理等を行わずに、QuickSight上でキーとしてまとめられないか調査したのでブログにします。

結論

  • QuickSightのビジュアルタイプである「テーブル」で、重複したレコードをまとめる方法は3つある
  1. 「グループ化の条件」に特定の項目を入れる
  2. distinct_count」関数を利用する
  3. 「グループ化の条件」に全ての項目を入れる
  • 「数値」ではなく文字列等でそのままレコードを表示したい場合は3の案になる
    • 「グループ化の条件」に全ての項目を入れると若干処理が重くなるので注意

やってみる

重複したレコードをまとめる前

重複したレコードが表示されている状態を作成します。
一意であるContactIdで、今回はaaaaaaaaaabbbbbbbbbbが、それぞれ2つ重複している形を想定します。
これをそれぞれまとめて合計が2件として表示させます。

1. 「グループ化の条件」に特定の項目を入れる

シンプルに「値」ではなく、特定の項目を「グループ化の条件」に入れる場合です。
今回はContactIdが一意であると想定している為、ContactIdを「グループ化の条件」に移動させます。

4件あったレコードを、ContactIdをキーとして2件にまとめることができました。

注意点として、その他の値は「カウント」(数値のみ)で表示される形になります。
条件を変えようとしても、フォーマットオプションが「カウント」のみしか表示されません。

集計で表示させる内容が「カウント」(数値のみ)であれば、有効な方法です。

2. 「distinct_count」関数を利用する

distinct_count」関数はQuickSightの計算フィールドで利用できる関数です。
1つ以上の項目に対して、グループ化の処理を行うことができます。
構文はこちらです。

distinct_count(dimension or measure, [group-by level])

計算フィールドの作成はQuickSightのデータセットから行います。
「フィールド」から「計算フィールドを追加」をクリックします。

単純にdimensionContactIdで指定しました。

distinct_count({ContactId})

保存できたら分析に移動します。
作成した計算フィールドを「グループ化の条件」に持っていこうとしましたが、distinct_countの計算フィールドは「グループ化の条件」として利用できないとのことでした。

「値」に組み込むと、distinct_countの計算フィールドは「カスタム」となり、他の項目は全て「カウント」(数値のみ)になります。

また、表示される内容は、1の案と少し違い、それぞれの項目がいくつあるかと、重複しているものがいくつあるか表示されます。
今回のケースだと「通話開始時間」、「通話終了時間」、「ContactId」の項目が合計4つあり、重複しているデータ(ContactId_distinct_count)が2つとして表示されます。
distinct_count関数はLAC-A関数として利用すると幅が広がりそうです。今回は利用ケースとズレる為割愛しますが、詳細については下記記事をご参照ください。

3. 「グループ化の条件」に全ての項目を入れる

最後のケースで、全ての項目を「値」から「グループ化の条件」に移動させてみました。
すると、各レコードの重複がグループ化され、4件あったのが2件で表示することができました。

日付が2023年4月4日までの表示になっていますが、項目の「集計」から細かい日付で表示させることが可能です。

「分」を選択すると、今回行いたい重複したレコードをまとめる形で表示することができました。

最後の案の注意点として、「値」ではなく「グループ化の条件」にいれると、全ての項目に対してGroup by関数が実行される為、パフォーマンスが低下します。
実際に試してみて、処理時間に対して抵抗がある場合は「値」に入れつつ、運用上難しいなどあれば前処理で重複データをマージする形を検討しましょう。

最後に

QuickSightのビジュアルタイプである「テーブル」で、重複したレコードをQuickSight上でまとめる方法を整理してみました。
重複したデータがあって見づらい等あれば、参考にしてみてください。

ではまた!コンサルティング部の洲崎でした。