簡體   English   中英

透視 AWS Redshift SUPER 數據

[英]Pivoting AWS Redshift SUPER data

我有以下表結構:

server_id server_databases
1 [{“name”:“mssql”,“count”:12},{“name”:“postgresql”,“count”:1}]
2 []
3 null

結果我想收到什么(如果它是 null 或空 object 無關緊要,我想保留服務器 2 和 3):

server_id 數據庫
1 {“mssql”:12,“postgresql”:1}
2 null
3 null

我嘗試自己構建 json

SELECT server_id,
       (
           select '{' || listagg('"' || x.name || '":' || x.count, ',') || '}' as clientdatabases
           from (
                    select cb."name"::varchar as name, sum(cb."count")::int as count from e.server_databases as cb group by name
                ) x
       )
FROM my_table e

但它因有趣的錯誤而失敗

[XX000] 錯誤:由於內部錯誤,不支持查詢。 詳細信息:不支持的見證案例 其中:nested_decorrelate_calc_witness_unsupported|calc_witness

看起來 PartiQL 支持這種情況,但我不知道如何實現它。 我現在將使用 UDF。 但是,如果您可以幫助我提供“本機”解決方案,那就太棒了。

在計數中使用ISNULL

SELECT server_id,
       (
           select '{' || listagg('"' || x.name || '":' || x.count, ',') || '}' as clientdatabases
           from (
                    select cb."name"::varchar as name, ISNULL(sum(cb."count")::int,0) as count from e.server_databases as cb group by name
                ) x
       )
FROM my_table e

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM