見出し画像

Chatbase 学習データ 第2章「LATERAL句」のお世話になる

前日からの続きです。横から縦へとデータ構造を変えるのに、サンプルデータを手作業でまとめたものの、実データはそうはいきません。
ただ、こんなことを考えるのは私が初!ではないはずなので、安心してChatGPTへ聞いてみると、「LATERAL」を誇らしげに提示してくれました。

サンプルのテーブルとサンプルデータの登録

CREATE TABLE example_array (
    id serial PRIMARY KEY,
    col1 INTEGER,
    col2 INTEGER,
    col3 TEXT
);

-- サンプルデータの挿入
INSERT INTO example_array (col1, col2, col3) VALUES (10, 20, 'Sample Text');
INSERT INTO example_array (col1, col2, col3) VALUES (30, 40, 'Another Text');

次に取得するSQL

SELECT id, column_name, value
FROM example_array,
LATERAL (
    VALUES 
        ('col1', col1::TEXT),
        ('col2', col2::TEXT),
        ('col3', col3)
) AS columns(column_name, value)
WHERE id = 1;

クエリ結果

 id | column_name |    value    
----+-------------+-------------
  1 | col1        | 10
  1 | col2        | 20
  1 | col3        | Sample Text

Ver9.3以降から用意されているようですが、大変便利です。
Group byと併用すると、さらに集約されることから、データ量も最小に従えられるのでとてもいい具合にデータを整えることができます。

ということで、早速トライ&テストでさらにデータの構造を調整中です。
うまくいけば、先日リリースしたChatabaseの学習データに使えるかな。

(自社サービス紹介)
ワーカーネットでは自動化と機能簡素化で1名1日、勤務時間問わずで利用料500円となっておりますが、シスプロ・ワーカーズプロレギュラーでは、雇用管理を含めきめ細やかな管理ができる日々紹介サービスです。