Snowflake:在 SQL 过程中遇到内存错误

Snowflake: Hitting Memory Error on SQL procedure

我不想解释为什么我们的仓库是这样设置的。但简而言之,我们所有 table 都需要执行此操作,因为我们正在对数据摄取进行一些更改。

USE DATABASE WAREHOUSE;

UPDATE WAREHOUSE.EVENTSOURCES_TEST
SET etl_uuid = a.etl_uuid 
FROM  
    (SELECT ltrim(split_part(_FILE, '/', 6), 's') as etl_uuid
     FROM WAREHOUSE.EVENTSOURCES_TEST) a  
WHERE _FILE IS NOT NULL AND etl_uuid IS NULL;

使用中号或大号会导致此更新,这是我们所有 table 支持此更改所必需的 return Snowflake 仓库大小的内存错误。

SQL execution internal error: Processing aborted due to error 300005:946296401

现在 Snowflake 的建议是在更新期间增加仓库大小。这很好,但这已经发生在我们拥有 1.58 亿行的较小 table 之一上。许多 table 的数量是这个数量的十倍。理想情况下,我想创建一个批处理过程来更新 100k 行之类的内容,然后一遍又一遍地继续这样做,直到整个 table 被更新。但这在雪花本身中不受支持,所以我正在寻找是否有关于如何处理这种情况的任何其他见解?

我相信我会像下面这样重写查询并尝试一下,因为我认为您不需要内联视图:

UPDATE  warehouse.eventsources_test
SET     etl_uuid = LTRIM(SPLIT_PART(_file, '/', 6), 's')
WHERE   _file IS NOT NULL AND etl_uuid IS NULL;