最初の投稿のスクリプトを改善したい方のために、簡単な更新情報です。
実は、データの量に関係なく、一度にすべてのデータを取得することが可能です ![]()
(id カラムと raw カラムを持つそれなりのサイズの posts テーブルでストレステストしましたが、問題なく動作しました!)
サンプルクエリ:
SELECT 'id'
|| string_agg(E'\\n' || case when posts.id::text is null then '-1' else posts.id::text end
,''
ORDER BY posts.id asc) as value
FROM posts
これを実行すると、ほぼ CSV 形式のファイルが 1 つの値として出力され、1 ページに収まります。その後、value の先頭と末尾の " を削除すれば、そのまま使える CSV になります:
もちろん、CSV ファイルに新しいカラムを追加し、そのカラムに対応するデータを追加することで、さらに多くのデータを取得できます:
SELECT 'id,newcolumn'
|| string_agg(E'\\n' || case when posts.id::text is null then '-1' else posts.id::text end
|| string_agg(E'\\n' || case when posts.newcolumn::text is null then '-1' else posts.newcolumn::text end
,''
ORDER BY posts.id asc) as value
FROM posts
このようなクエリに対応するように更新すれば、Power BI が複数のページを横断する必要がなくなり、データの取得が高速化されます。
