首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雪花临时表排序

问雪花临时表排序
EN

Stack Overflow用户
提问于 2020-10-17 00:20:42
回答 1查看 737关注 0票数 2

我正在尝试对CTE (WITH)和临时表进行性能比较。我已经将查询转换为使用的临时表,但我看到了这样一种情况:当作为一个整体运行时,执行会失败,因为早期的临时表执行被取消了。示例:

代码语言:javascript
复制
// Produces large result set
CREATE temporary table tt1 as
SELECT DISTINCT
    t1.c1
  FROM t1
  //ADDITIONAL LOGIC
  ;

CREATE temporary table tt2 as
SELECT t2.c1
    t2.c2
FROM t2;

CREATE temporary table tt3 as
SELECT t1.c1
FROM t1
INNER JOIN tt1
 on t1.c1 = tt1.c1;

当tt3开始运行时,执行似乎被取消了,有一个从tt3返回到tt1的依赖。我尝试了CTAS,并使用标准CREATE TABLE定义表,然后执行INSERT INTO,但其结果与取消执行的结果相同。

有没有一种方法可以通过标准sql语法更好地对这些数据进行排序,而不必走存储过程或任务的路线?

Edit2在这里是一个更简单的场景,它使用了行为相同的COVID数据集。两种情况下的终止时间似乎都在35秒左右。因此,出于复制目的,如果您可以生成一个运行2分钟的查询,然后创建一个简单的后续临时表,并从第一个临时表中进行选择,那么您应该能够进行复制。

代码语言:javascript
复制
CREATE TEMPORARY TABLE PLATFORM_EVALUATIONS.PUBLIC.TT1 AS
select a.COUNTRY_REGION
    , a.PROVINCE_STATE
    , a.COUNTY
    , current_date() c_date
    , count(*) counts
from PUBLIC.JHU_COVID_19_TIMESERIES a
inner join public.jhu_dashboard_covid_19_global b
 on a.country_region = b.country_region
where 1=1
and a.COUNTRY_REGION = 'United States'
group by a.COUNTRY_REGION
    , a.PROVINCE_STATE
    , a.COUNTY;
    
CREATE TEMPORARY TABLE PLATFORM_EVALUATIONS.PUBLIC.TT2 AS
SELECT COUNTRY_REGION
    , COUNTS
FROM PLATFORM_EVALUATIONS.PUBLIC.TT1;

编辑1:Work History Screenshot您可以在屏幕截图中看到_valid_barcodes (tt1)的持续时间被缩短(通常独立于2m 14秒),其他步骤在其完成/终止之前开始。

代码语言:javascript
复制
// this is tt1 in my example it produces 3,657,599 rows in 2m 14s but is cancelled short when run as a whole.
CREATE temporary table business_vault_dev.dnr._valid_barcodes as
  SELECT DISTINCT
    e.Barcode
  FROM BUSINESS_VAULT_DEV.DNR.DIM_EVENT_VW e
  INNER JOIN BUSINESS_VAULT_DEV.DNR.DIM_PACKAGE_VW p
    on e.BARCODE = COALESCE(p.Barcode, p.Barcode)
  INNER JOIN BUSINESS_VAULT_DEV.DNR.DIM_ORDER_VW o
    on p.order_key = o.order_key
  INNER JOIN BUSINESS_VAULT_DEV.SCORECARD.DIM_CUSTOMER_VW cl
    on o.CUSTOMER_ID=cl.CUSTOMER_ID
  WHERE e.Event_Type='Delivered'
    and o.service_code not in ('XD', 'PU')
    and lower(cl.NAME) IN ('a', 'b', 'c')
  GROUP BY e.Barcode
  HAVING date(min(e.EST_Event_DateTime)) between '2020-09-05' and '2020-10-02';

// this is tt2 
CREATE temporary table business_vault_dev.dnr._driver_merge as 
    select 
//redacted
    from data_lake.driver.driver_table1
    union
    select 
//redacted
    from data_lake.driver.driver_table2
    union
    select 
//redacted
    from data_lake.driver.driver_table3
    UNION
    select 
//redacted
    from data_lake.driver.driver_table4;

// this is unreferenced in my example but completes successfully and references the previous temp table    
CREATE temporary table business_vault_dev.dnr._driver as 
    select 
// redacted
    from business_vault_dev.dnr._driver_merge dm
    group by dm.contractor_number;

// this is tt3 in my example
CREATE temporary table business_vault_dev.dnr._slef_dedup as 
    SELECT
          e.Barcode
    // redacting columns here
    FROM BUSINESS_VAULT_DEV.DNR.DIM_EVENT_VW e
    INNER JOIN business_vault_dev.dnr._valid_barcodes vb
     ON e.Barcode = vb.Barcode
    LEFT JOIN data_lake.driver.driver_table1 cn
     ON //redacted
    LEFT JOIN data_lake.driver.driver_table2 pcp
     ON //redacted
;
EN

回答 1

Stack Overflow用户

发布于 2020-10-17 21:49:45

Daniel,我可以使用COVID数据库的简单场景在我的测试中重现这个问题。新的用户界面似乎有问题。它开始运行第二个CREATE TABLE命令,但没有完成第一个命令。请向Snowflake support提交工单。

在提交此票证时生成和共享HAR文件并包含要重新生成的SQL将非常有用。

https://community.snowflake.com/s/article/How-to-generate-a-HAR-file-for-Web-Interface-Troubleshooting

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64392915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档