我们想将下面的查询更改为使用snowflake。
INSERT OVERWRITE INTO {events_scoring}.profile_to_json_with_classified_campaigns_results
SELECT to_json.ksname,
to_json.cust_profile_id,
concat("{{",concat_ws('$',sort_array(collect_list(concat($$"$$,cast(to_json.portfolio_type AS STRING),$$":"$$, cast(to_json.counter AS STRING),$$"$$)))),'}}') AS json_of_campaign_counters_according_to_portfolio_types
FROM
(SELECT final.ksname,
final.cust_profile_id,
final.portfolio_type_final AS portfolio_type,
count(*) AS counter
FROM {events_scoring}.campaign_to_portfolio_type FINAL
GROUP BY final.ksname,
final.cust_profile_id,
final.portfolio_type_final
ORDER BY portfolio_type) to_json
GROUP BY to_json.ksname,
to_json.cust_profile_id
提一下 "\""
已替换为 $$"$$
.
但我没有找到合适的替代品 sort_array
功能。
有人能帮忙吗?
2条答案
按热度按时间gt0wga4j1#
您是否尝试过使用array\u agg而不是collect\u list?
https://docs.snowflake.com/en/sql-reference/functions/array_agg.html
类似于(因此它也对数组进行排序):
r1zhe5dt2#
listag聚合函数返回用分隔符连接的字符串,类似于concat\u ws。可与group by或over()一起使用。