【问题标题】:How to select variant column with one csv row as multiple columns in Snowflake?如何在 Snowflake 中选择一个 csv 行的变量列作为多列?
【发布时间】:2021-01-28 13:08:54
【问题描述】:

我在雪花中有一个表 TABVAR,其中有列 Var_Col,它是 VARIANT 类型。我从一些csv加载每一行,所以值就像'val1;val2;val3'。

我知道我可以直接从 csv 将其作为列查询,但我必须以其他方式进行。

问题是如何查询 Var_Col 以获得类似的东西:

select firstValFromVar_Col, secondValFromVar_Col, thirdValFromVar_Col
from  TABVAR

我的意思是上面的查询和结果是这样的:

Col1 Col2 Col3
val1 val2 val3

从 TABVAR 中选择 * 的输出:

Var_Col
val1;val2;val3

【问题讨论】:

  • 变体列通常用于半结构化数据(键值对),如果您从 CSV 加载,为什么不使用带有 ; 分隔符的结构化格式?您现在无法从 VARIANT 列请求特定值,因为您没有它的键。
  • 您能否向我们展示执行SELECT * FROM TABVAR 以了解当前架构的结果?
  • @FelipeHoffa 输出已添加到问题中。
  • @Sergiu 感谢您的 [实际上] 回答。没有答案为什么 csv 是变体,我必须从已经完成的事情中获取信息。看来剩下的就是用子字符串取值

标签: sql csv snowflake-cloud-data-platform variant


【解决方案1】:

可以这样做:

select   split_part("Var_Col", ';',  1)
, split_part("Var_Col", ';',  2)
, split_part("Var_Col", ';',  3)
from "TABVAR"

【讨论】:

    猜你喜欢
    • 2015-03-03
    • 2013-08-09
    • 2015-12-13
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    相关资源
    最近更新 更多