🙄
【QuickSight】ヒストグラムが作成できない。原因と解決策を解説
はじめに
Amazon QuickSight は AWS が提供するクラウドベースの BI ツールで、手軽にグラフを作成してデータを可視化できます。
しかし、元データがすべて文字列として扱われている場合、ヒストグラムを作成できないという問題が起きることがあります。
ヒストグラムとは?
ヒストグラム は、データの分布を可視化するためのグラフです。
数値データの範囲(ビン)ごとにデータの個数をカウントし、度数分布 として表現するため、データがどのように分布しているのかを把握するのに便利です。
ヒストグラム作成ができない理由
ヒストグラムは、数値型の連続データを度数分布として可視化するグラフです。
QuickSight はカラムの型を自動推定しますが、元データが文字列 (String) として扱われていると数値として認識されず、ヒストグラムのオプションが選べなくなります。
背景
- RDS のデータベーステーブルでは、本来 数値として扱われるべきカラム(例:
victim_age
,sales_amount
) も、すべてTEXT
型で保存されていました。 - そのため、QuickSight にデータをインポートするときも、全てのフィールドが「文字列(String)」として認識されてしまった のです。
事例
- 売上や在庫数などが
"100"
,"200"
と文字列扱いになっており、グラフで「数値」として扱えない。 - 年齢データ
age
に"A100"
,"B110"
のような文字が混ざっており、正しい数値変換が行われない。
対処法: データ型を数値に変換する
1. データセット編集画面で列の型を変更
- QuickSight の「分析 (Analysis)」画面で対象のデータセットを開く。
- データプレビュー画面でカラム名の下に表示される型 (
Abc
や123
など) をクリック。 -
Integer
を選択して、明示的に数値型に変更する。
2. 計算フィールドで文字列を数値に変換
もし列に不要な文字が混在している場合、計算フィールド で変換するほうが柔軟です。
victim_age
に "A100"
, "B110"
が含まれる場合
例: ifelse(
parseInt({victim_age}) >= 0,
parseInt({victim_age}),
NULL
)
- QuickSight が文字列を
parseInt()
で数値に変換できない場合はNULL
となります。 - ヒストグラムを作成する際、
NULL
は度数分布から除外される形となります。 - 必要に応じて
replace()
関数を使い、"A100"
の"A"
を事前に削除するなどの処理を追加することも可能です。
ヒストグラム作成手順
- データ型を正しく数値に変換したカラムを用意する。
- 分析画面で新しいビジュアルを追加し、ヒストグラム を選択。
- 「値」 に数値カラムをドラッグ&ドロップ。
- ヒストグラムの「ビンの数」などを調整して、度数分布を可視化する。
まとめ
- ヒストグラムを作るには 数値型フィールド が必須。
- 元データが文字列扱いになっている場合は、型の変更 または 計算フィールドでの変換 を行う。
- 文字列の書式が揃っていない場合は、
replace()
やifelse()
を活用して整形・除外し、安定して数値へ変換できるようにする。
上記のステップを踏めば、QuickSight でヒストグラムが作れない問題を解決し、スムーズに度数分布を可視化できるようになるはずです。
Discussion