Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Snowflake cloud data platform 雪花中的缓存_Snowflake Cloud Data Platform - Fatal编程技术网

Snowflake cloud data platform 雪花中的缓存

Snowflake cloud data platform 雪花中的缓存,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,试图了解所有SQL都可以用于结果缓存 考虑多个脚本从一个大表中提取数据,然后执行不同的操作。 如果我们在应用了所有脚本中使用的公共过滤器之后使用大表创建一个易失性表,为什么不使用结果缓存呢。考虑到大数据表不会改变 在下面的示例中,Script1步骤1将使用Compute。其他脚本中的相同步骤会使用计算还是使用结果缓存 脚本1: 步骤1:创建易失性表VT_测试 从CODE='TEST'所在的大_表中选择COL1、COL2 步骤2:更新VT_测试 设置COL1='TEST1' 脚本2: 步骤1:创建

试图了解所有SQL都可以用于结果缓存

考虑多个脚本从一个大表中提取数据,然后执行不同的操作。 如果我们在应用了所有脚本中使用的公共过滤器之后使用大表创建一个易失性表,为什么不使用结果缓存呢。考虑到大数据表不会改变

在下面的示例中,Script1步骤1将使用Compute。其他脚本中的相同步骤会使用计算还是使用结果缓存

脚本1: 步骤1:创建易失性表VT_测试 从CODE='TEST'所在的大_表中选择COL1、COL2

步骤2:更新VT_测试 设置COL1='TEST1'

脚本2: 步骤1:创建易失性表VT_测试 从CODE='TEST'所在的大_表中选择COL1、COL2

步骤2:更新VT_测试 设置COL1='TEST2'

脚本n: 步骤1:创建易失性表VT_测试 从CODE='TEST'所在的大_表中选择COL1、COL2

步骤2:更新VT_测试
设置COL1='TESTn'

答案可能是。在文档中讨论结果集缓存重用的部分中,列出了使用结果集缓存必须满足的七个标准。如果它满足所有七个条件,它可以使用结果集缓存,但不能保证

如果要确保Snowflake使用结果集缓存,可以使用结果扫描表功能:

use warehouse test;

-- Grab some rows
select * from "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1"."ORDERS" limit 1000;

-- Set the id variable for later use
set id = last_query_id();

-- Suspend the warehouse to show it won't resume on next statement
alter warehouse test suspend;

-- Use a result from the result set cache
select * from table(result_scan($id));

在许多情况下,或者在大多数情况下,您根本不需要创建易失性表。您只需执行一个返回行的查询,并从结果集缓存中重复使用结果24小时。换句话说,与其像select那样执行insert,不如简单地执行select并获取查询ID。然后,您可以使用结果集缓存中的结果24小时。

谢谢Greg。假设我正在使用SnowSQL编写一个表加载过程,其中执行多个SQL语句来转换来自不同表的数据。通常,我们使用Volatile表来存储中间数据,这些中间数据用于进一步的连接/转换。执行SELECT而不是创建Volatile表,我假设它会将所有行写入SnowSql日志。即使是最后一个查询ID,它也只捕获此会话的ID。或者考虑到企业产品工作负载的雪花帐户而并行运行的任何会话最后一个查询ID应用于当前会话。结果扫描表功能将为同一用户工作24小时。如果需要从不同的会话访问结果集缓存,请获取查询id并将其存储在某个位置以供以后使用。result_scan table函数的运行方式类似于临时表,但它是24小时运行的,而不是会话的持续时间。您必须通过查询ID或使用最后一个查询ID函数来引用它。您还可以在参数中为last_query_id指定-1,-2,以指定发生在2后面、3后面等的查询,但始终用于该会话。谢谢Greg。我首先关心的是什么。如果我在SnowSQL中运行select列,并尝试在单独的SnowSQL脚本中使用该结果,它会不会将结果写入日志让我们假设我正在从LinuxIt运行脚本,它只会将行返回到执行select的SnowSQL会话。