Discourse Data Explorer Power BI 連携

最初の投稿のスクリプトを改善したい方のために、簡単な更新情報です。

実は、データの量に関係なく、一度にすべてのデータを取得することが可能です :sweat_smile:
(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 が複数のページを横断する必要がなくなり、データの取得が高速化されます。

「いいね!」 4