gpt4 book ai didi

arrays - 如何在 Snowflake SELECT 中展平一组 ARRAY_AGGS

转载 作者:行者123 更新时间:2023-12-02 03:12:51 24 4
gpt4 key购买 nike

我正在尝试对多个连接的 VARIANT 列表进行 SELECT。主记录作为 DATA 返回,其周围的所有支持信息均由作为 INCLUDED 返回的支持连接表组成。

我在支持的 VARIANT 记录上使用 ARRAY_CONSTRUCT_COMPACT 和 ARRAY_AGG(DISTINCT [record]) 来聚合它们并消除重复。

问题是 ARRAY_AGG 在我的一个连接表 (ENTITIES) 上生成多条记录。当使用 ARRAY_CONSTRUCT_COMPACT() 构造它们时,结果是一个数组数组,我需要将其展平为单个对象数组。

我尝试过将 ARRAY_COMPACT 和 ARRAY_CAT 与嵌套 ARRAY_AGGS 结合使用,但需要注意的是 ARRAY_CAT 仅接受 2 个参数。下面的代码让我最接近我需要的,但我似乎不知道如何将最终的数组展平为包含的。


SELECT
a1.appointment data,
ARRAY_CONSTRUCT_COMPACT(
ARRAY_AGG(DISTINCT c1.call),
ARRAY_AGG(DISTINCT e1.entity),
ARRAY_AGG(DISTINCT a2.address)
) included

FROM APPOINTMENTS a1

INNER JOIN CALLS c1 ON c1.call:id = a1.appointment:callId

INNER JOIN ENTITIES e1 ON e1.entity:id IN (
a1.appointment:relationships.agent,
a1.appointment:relationships.consultant,
a1.appointment:relationships.contact
)

INNER JOIN ADDRESSES a2 ON a2.address:id = a1.appointment:relationships:office

WHERE a1.appointment:id = 'some_appointment_id'

GROUP BY a1.appointment;

我的 INCLUDED 列的输出当前为:[[{}]、[{}、{}]、[{}]]

我需要将其展平为:[{}、{}、{}、{}]

任何帮助将不胜感激!

最佳答案

您可以在函数中使用 javascript,这将使这个变得漂亮和整洁:

CREATE OR REPLACE FUNCTION ARRAY_CAT_ALL( source Array )
RETURNS ARRAY
LANGUAGE JAVASCRIPT
AS
$$
return [].concat.apply([], SOURCE);
$$;

然后您可以使用此函数包装 ARRAY_CONSTRUCT_COMPACT 结果,该函数会将数组数组展平为单个数组。

关于arrays - 如何在 Snowflake SELECT 中展平一组 ARRAY_AGGS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57116256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com