雪花物化视图可以包含半结构化数据的展平吗?

Posted

技术标签:

【中文标题】雪花物化视图可以包含半结构化数据的展平吗?【英文标题】: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;

【问题讨论】:

【参考方案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);

【讨论】:

以上是关于雪花物化视图可以包含半结构化数据的展平吗?的主要内容,如果未能解决你的问题,请参考以下文章

变体列中唯一元素的雪花查询性能

雪花在自我加入时创建物化视图

查询雪花中的半结构化字段

使用 dbt 的物化视图与表

雪花物化视图未更新

雪花中具有多个 JSON 对象的横向展平数组