我可以根据 LIMIT/OFFSET 将 Snowflake json 输出批处理为单独的行吗

问题描述 投票:0回答:1

我在 Snowflake 中有一个查询,它会按行生成 json 输出。 29,000 多行。我正在使用此查询在 MDM 系统中创建记录。然而,这种摄取过程有点低效且成本高昂。此后,我采用了创建 json 的最终 SELECT 语句并将其放入 CTE 中。然后我做了一个新的最终 SELECT 语句

SELECT ARRAY_AGG(*) as clin_prov
FROM clin_prov

这使得系统的规模不堪重负。在 1000 甚至 5000 的 CTE 中使用 LIMIT 会产生结果,生成一个大的 json 记录,正如预期的那样。我想要 30 行带有 <= 1000 json records in the final output. Is there a way to do that? Can I create Arrays based on LIMIT and OFFSET and feed into separate rows? I

的数组

我在 clin_prov cte 中尝试过使用 LIMIT 和不使用 LIMIT。我尝试使用基于 LIMIT 和 OFFSET 的单独 ctes,然后使用 UNION ALL。这也超载了。

snowflake-cloud-data-platform limit offset array-agg
1个回答
1
投票

是的,您可以批量处理。请尝试以下操作,更改批次数的

NTILE
值。

WITH clin_prov AS (
  SELECT 
    ..., 
    NTILE(50) OVER (ORDER BY some_column) AS batch
  FROM 
    ...
)
SELECT batch, ARRAY_AGG(your_json_column) AS clin_prov
FROM clin_prov
GROUP BY batch
ORDER BY batch
© www.soinside.com 2019 - 2024. All rights reserved.