【问题标题】:Can a Snowflake materialized view contain flatten of semi-structured data?雪花物化视图可以包含半结构化数据的展平吗?
【发布时间】:2020-02-23 13:38:10
【问题描述】:

本文结尾建议物化视图可以包含 flatten ... https://www.snowflake.com/blog/snowflake-materialized-views-a-fast-zero-maintenance-accurate-solution/ 但是如果我尝试它,我会得到一个错误......“视图定义中引用了多个表” 有人有任何关于如何使用 flatten 创建 MV 的示例吗?

CREATE OR REPLACE MATERIALIZED VIEW MV_SOMETHING
AS
SELECT
    F.ID,
    A.VALUE:Type::string                    AS ATTRIBUTE_TYPE,
    A.VALUE:Value::string                   AS ATTRIBUTE_VALUE
FROM
    FRAME F
    , lateral flatten(input => F.ENVIRONMENT) A;

【问题讨论】:

    标签: flatten materialized-views snowflake-cloud-data-platform


    【解决方案1】:

    以下内容对我来说很好。数组需要FLATTEN(),但对象不需要。
    也许您将两者混合在一起?

    CREATE OR REPLACE TABLE T AS
    SELECT 1 ID, ARRAY_CONSTRUCT(1, 2, 3) A, OBJECT_CONSTRUCT('X', 2, 'Y', 3) O;
    
    CREATE OR REPLACE MATERIALIZED VIEW T_MV AS
    SELECT
        ID,
        O:X::NUMBER O_X,
        O:Y::NUMBER O_Y,
        VALUE A
    FROM T, LATERAL FLATTEN(INPUT => A);
    

    【讨论】: