まずは超基本だけど大事なことから始めよう:データってそのままだと「生データ」なことが多いんだよね。数字や日付、文字列がごちゃごちゃしてると、見てるだけで頭が痛くなる。例えば、レポートで日付がバラバラのフォーマットで書かれてたらどう?01/02/2023もあれば2023-02-01もある。これ、どんなに注意深いアナリストでも混乱しちゃうよね。そこで登場するのがデータのフォーマットっていう魔法なんだ。
データのフォーマットを使うと:
- データを見やすい形に変換できて、作業がめっちゃ楽になる。
- データ分析のライフハック使いになって、必要な情報をサクッと取り出せる。
- エクスポートや他のシステムとの連携用にデータを準備できる。
- レポートや可視化を読みやすくて正確にできる。
例えば、君が大学で働いてて、全学生のフルネーム、生年月日、学部を一覧にしたレポートを作る必要があるとしよう。データを手作業でくっつけるんじゃなくて、フォーマット付きのクエリを使えば、名前と苗字を1つのカラムにまとめたり、生年月日を「2001年3月12日」みたいに分かりやすく表示できるんだ。
データフォーマットの主なタスク
データのフォーマットって、フルーツサラダを作るのに似てる。フルーツをただボウルにぶち込むんじゃなくて、ちゃんと切ってキレイに盛り付けるでしょ。SQLでもこの作業はいくつかのタイプに分かれるんだ:
文字列のフォーマット
これは文字列の結合や、大文字・小文字の変換(全部大文字や全部小文字にしたり)、スペースや記号の追加・削除なんかが含まれるよ。
数字のフォーマット
場合によっては数字を文字列に変換したり、小数点以下の桁数を丸めたりするのが便利。
日付や時間の操作
ここでは、現在の日付を取得したり、日付データのフォーマットを変えたり、日付の一部(例えば年だけとか月だけとか)を取り出したりできる。
ユニークな値の抽出
レポートでユニークなレコード(例えばユニークな都市や学部)だけを表示したい場合も、これもデータフォーマットの一部だよ。
PostgreSQLで使えるフォーマット用ツール
PostgreSQLにはデータ操作用の便利な組み込み関数がたくさんある。ここでは、次のレクチャーで詳しくやるものの一部を紹介するね:
文字列のフォーマット
CONCAT(): 文字列の結合。UPPER(),LOWER(): テキストの大文字・小文字変換。
日付と時間のフォーマット
NOW(): 現在の日付と時間。CURRENT_DATE: 現在の日付(時間なし)。DATE_PART(): 年や月など、日付の一部を取り出す。
型変換
CAST(): データ型の変換。- 構文:
<値>::<型>。
データのソート
ORDER BY: 1つまたは複数のカラムでデータをソート。DISTINCT: ユニークな値の抽出。
データフォーマットの例:実際どうなる?
興味を持ってもらうために、いくつか例を見てみよう。まずはシンプルなやつから。
例1:文字列のフォーマット
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM students;
このクエリはfirst_nameとlast_nameを1つのカラムfull_nameにまとめるよ。例えば、学生の名前が「Otto」で苗字が「Art」なら、結果は「Otto Art」になる。
例2:日付のフォーマット
SELECT DATE_PART('year', date_of_birth) AS birth_year
FROM students;
ここではdate_of_birthカラムから生まれた年だけを取り出してる。もしデータベースの日付が2001-03-15なら、結果は2001になるよ。
例3:型変換
SELECT birth_year::text || ' 年' AS formatted_year
FROM (
SELECT DATE_PART('year', date_of_birth) AS birth_year
FROM students
) subquery;
このクエリでは、まず生まれた年を取り出して、それを文字列に変換して" 年"をくっつけてる。例えば、結果は2001 年みたいになる。
どこで使うの?
マネージャー向けレポート
みんなが「生データ」を見たいわけじゃない。例えば、会社の売上レポートなら、金額は千単位で区切って(1,000,000みたいに)、日付も21 FEB 2025みたいなフォーマットの方がいいよね。
クライアント向けレポート
例えば、クライアントへのメールで「親愛なる[名前 苗字]様、ご注文N123は2023年10月12日に無事配達されました」みたいな文面を作るとき。
他システムとの連携
入力フォームによっては、特定のデータフォーマットが必要なこともある。日付はISO形式、文字列は大文字小文字を区別、数字は丸めて表示、みたいな。
分析や可視化
グラフやチャートを作るとき、フォーマットなしだと見た目がめちゃくちゃになることもあるよ。
GO TO FULL VERSION