Snowflake cloud data platform ------------------------------------------------------------------------------+

Snowflake cloud data platform ------------------------------------------------------------------------------+,snowflake-cloud-data-platform,flatten,Snowflake Cloud Data Platform,Flatten,这将产生: +------+------+------+-----------+ |O|u F | ID | NAME | ZIPCODE| |-----+--------+----------+---------| |1 | sa|u id1 | sa|u name1 |空| |1 | sa|u id2 | sa|u name2 |空| |2 | sr|U id1 | sr|U名称1 |空| |2 | sr|u id2 | sr|u name2 | NULL| |3 | zr|u id1 |

这将产生:

+------+------+------+-----------+
|O|u F | ID | NAME | ZIPCODE|
|-----+--------+----------+---------|
|1 | sa|u id1 | sa|u name1 |空|
|1 | sa|u id2 | sa|u name2 |空|
|2 | sr|U id1 | sr|U名称1 |空|
|2 | sr|u id2 | sr|u name2 | NULL|
|3 | zr|u id1 | zr|u名称1 | 10001|
|3 | zr|u id1 | zr|u名称1 | 10002|
|3 | zr|u id1 | zr|u名称1 | 10003|
|3 | zr|u id2 | zr|u名称2 | 20001|
|3 | zr|u id2 | zr|u名称2 | 20002|
|4 | zr|u id1 | zr|u名称1 | 10001|
|4 | zr|u id1 | zr|u名称1 | 10002|
|4 | zr|u id1 | zr|u名称1 | 10003|
+-----+--------+----------+---------+

我不完全清楚这个要求。我的一位同事编写了一个存储过程来读取变量列并在其上创建一个视图。我重构并概括了代码。这符合你的需要吗?如果是这样的话,我可以把你引向源SP和我的重构代码的博客条目。@GregPavlik-谢谢你的回复。对然而,在VARIANT列将包含我的示例中提到的多个数据组合(数组、对象、字符串)的情况下,这有点棘手。我需要为每个数组和对象创建一个单独的视图。我确实提到了其中一个博客-。如果你引用了不同的内容,请分享。你找到了我引用的博客。该博客中的SP和我的重构代码都不会提取对象并推断其中的数据类型。它可以作为做类似事情的起点。@Kirby-谢谢你的详细回答,这与我正在寻找的类似。然而,我们的场景是——使用多模式动态地将JSON数据帧/分解到多个视图中。在这个场景中,要从Zips中获取值,我应该有两个展平-from,侧向展平(jsondata:address)a,侧向展平(a.value:ADDR.Zips)->当我从caluse动态地构建这个框架时,如何避免展平ADDR并直接进行Zips(通过循环我们这样做),但是我想知道还有其他方法吗。如果我的理解不正确,请纠正我。
row 1-> address <array>[ id string ,name string ]
row 2-> address<array> [addr<object> {id:"1",name:"abc"}]
row 3-> address<array> [addr<object> {id:"2",name:"dfg",Zips<array>[zip1:6009,zip2:789]}]
LATERAL FLATTEN (jsondata:address ,recursive =>true) a
LATERAL FLATTEN (a.value:addr,recursive =>true) b -> this is causing issue
LATERAL FLATTEN (c.value:Zips,recursive =>true) c