🙄

【QuickSight】ヒストグラムが作成できない。原因と解決策を解説

2025/02/13に公開

はじめに

Amazon QuickSight は AWS が提供するクラウドベースの BI ツールで、手軽にグラフを作成してデータを可視化できます。
しかし、元データがすべて文字列として扱われている場合、ヒストグラムを作成できないという問題が起きることがあります。


ヒストグラムとは?

ヒストグラム は、データの分布を可視化するためのグラフです。
数値データの範囲(ビン)ごとにデータの個数をカウントし、度数分布 として表現するため、データがどのように分布しているのかを把握するのに便利です。

ヒストグラム作成ができない理由

ヒストグラムは、数値型の連続データを度数分布として可視化するグラフです。
QuickSight はカラムの型を自動推定しますが、元データが文字列 (String) として扱われていると数値として認識されず、ヒストグラムのオプションが選べなくなります。

背景

  • RDS のデータベーステーブルでは、本来 数値として扱われるべきカラム(例: victim_age, sales_amount も、すべて TEXT 型で保存されていました。
  • そのため、QuickSight にデータをインポートするときも、全てのフィールドが「文字列(String)」として認識されてしまった のです。

事例

  • 売上や在庫数などが "100", "200" と文字列扱いになっており、グラフで「数値」として扱えない。
  • 年齢データ age"A100", "B110" のような文字が混ざっており、正しい数値変換が行われない。

対処法: データ型を数値に変換する

1. データセット編集画面で列の型を変更

  1. QuickSight の「分析 (Analysis)」画面で対象のデータセットを開く。
  2. データプレビュー画面でカラム名の下に表示される型 (Abc123 など) をクリック。
  3. Integerを選択して、明示的に数値型に変更する。

2. 計算フィールドで文字列を数値に変換

もし列に不要な文字が混在している場合、計算フィールド で変換するほうが柔軟です。

例: victim_age"A100", "B110" が含まれる場合

ifelse(
  parseInt({victim_age}) >= 0,
  parseInt({victim_age}),
  NULL
)
  • QuickSight が文字列を parseInt() で数値に変換できない場合は NULL となります。
  • ヒストグラムを作成する際、NULL は度数分布から除外される形となります。
  • 必要に応じて replace() 関数を使い、"A100""A" を事前に削除するなどの処理を追加することも可能です。

ヒストグラム作成手順

  1. データ型を正しく数値に変換したカラムを用意する。
  2. 分析画面で新しいビジュアルを追加し、ヒストグラム を選択。
  3. 「値」 に数値カラムをドラッグ&ドロップ。
  4. ヒストグラムの「ビンの数」などを調整して、度数分布を可視化する。

まとめ

  • ヒストグラムを作るには 数値型フィールド が必須。
  • 元データが文字列扱いになっている場合は、型の変更 または 計算フィールドでの変換 を行う。
  • 文字列の書式が揃っていない場合は、replace()ifelse() を活用して整形・除外し、安定して数値へ変換できるようにする。

上記のステップを踏めば、QuickSight でヒストグラムが作れない問題を解決し、スムーズに度数分布を可視化できるようになるはずです。


参考文献

codeciaoテックブログ

Discussion