Python 雪花:在SQL过程中遇到内存错误
我不想解释为什么我们的仓库是这样设置的。但简而言之,由于我们正在进行的数据摄取中的一些更改,所以在所有表中都需要此操作Python 雪花:在SQL过程中遇到内存错误,python,sql,memory,snowflake-cloud-data-platform,Python,Sql,Memory,Snowflake Cloud Data Platform,我不想解释为什么我们的仓库是这样设置的。但简而言之,由于我们正在进行的数据摄取中的一些更改,所以在所有表中都需要此操作 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_T
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;
使用中等大小或较大大小会导致此更新,这是所有表支持此更改所必需的,以返回有关Snowflake仓库大小的内存错误
SQL执行内部错误:处理因错误300005而中止:946296401
现在,Snowflake建议在更新期间增加仓库大小。这很好,但这已经发生在我们的一个较小的表上,有158M行。许多桌子上的数字是这个数字的十倍。理想情况下,我希望创建一个批处理类型的流程,该流程将更新大约100k行,然后一遍又一遍地进行更新,直到整个表被更新。但snowflake本身不支持这一点,因此我正在寻找如何处理这种情况的其他见解?我相信我只需像下面这样重写查询并尝试一下,因为我认为您不需要内联视图:
UPDATE warehouse.eventsources_test
SET etl_uuid = LTRIM(SPLIT_PART(_file, '/', 6), 's')
WHERE _file IS NOT NULL AND etl_uuid IS NULL;