雪花配置文件不匹配说明

时间:2021-02-26 20:51:09

标签: snowflake-cloud-data-platform

我发现查询 EXPLAIN 输出与已完成查询的“配置文件”选项卡下显示的内容不匹配的情况。可能有一个更简单的查询来重现这些结果,但我还没有找到。我发现,如果您加入多个 WITH 语句,并且其中一个 WITH 语句包含 UNION,则 EXPLAIN 将在Table Scan 步,但个人资料不会。

以下是一些有效查询和错误查询的示例:

-- Join On Union. No With (Good)
SELECT COUNT(*) as "count", RANDOM() cb 
FROM (
    SELECT *
    FROM tpch_sf100.customer t1
    JOIN (
        SELECT * FROM tpch_sf100.customer
        UNION ALL
        SELECT * FROM tpch_sf100.customer
    ) t2 ON t1.c_custkey = t2.c_custkey
)

-- Join On Union. Using With (Good)
SELECT
    COUNT(*) AS "count", RANDOM() cb 
FROM (
    WITH t1 AS (
        SELECT * FROM tpch_sf100.customer
        UNION ALL
        SELECT * FROM tpch_sf100.customer
    )
    SELECT * FROM tpch_sf100.customer t2
    JOIN t1 on t1.c_custkey = t2.c_custkey
)

-- Join On Union. Multiple Withs (Bugged)
EXPLAIN SELECT
    COUNT(*) AS "count", RANDOM() cb 
FROM (
    WITH t1 AS (
        SELECT * FROM tpch_sf100.customer
        UNION ALL
        SELECT * FROM tpch_sf100.customer
    ), t2 AS (
        SELECT * FROM tpch_sf100.customer
    )
    SELECT *
    FROM t1
    JOIN t2 on t1.c_custkey = t2.c_custkey
)

对于“Good”查询,说明和配置文件都正确显示在表扫描中仅提取了 c_custkey 字段。

说明: Explain

简介: Profile

但是对于最后一个“Bugged”查询,解释正确显示只使用了 c_custkey,但配置文件没有使用。

说明: Explain

简介: Profile

我认为这是个人资料中的一个视觉错误,但希望有人确认或解释为什么这两者不同。如果查询确实拉回了那些额外的未使用字段,为什么该步骤显示它扫描的数据量与其他没有拉回额外字段的查询相同?

0 个答案:

没有答案