【发布时间】:2021-03-01 16:19:00
【问题描述】:
我需要使用数组中指定的字段来取消透视表。我有以下查询:
select
*
FROM
TEMP_TABLE_NAME T unpivot (
val_col for name_col in (
array_of_fields
)
);
问题在于我们的数据是动态的,我们可能会收到包含 10 个字段或 100 个字段的数据,具体取决于我们需要上传到 Snowflake 的调查。
因此,我没有显式声明我需要使用的字段,而是将字段导出到一个数组中,并且我需要在unpivot 的in 子句中使用它们。当我们指定一些字段时,查询工作正常。
【问题讨论】:
-
如果您修复数据模型,使“变量”列在行中而不是列中,那么您可以轻松解决此问题。
-
@GordonLinoff 我们的数据模型基于数据保险库技术和 Microsoft 用于非营利实体的数据模型,这就是我们这样做的原因。
-
如果这是在存储过程中并且我们使用 JavaScript 将数组中的字段提取到 IN 子句中,是否有可能?
-
@alim1990 在 cmets 中回答您的问题,是的 - 如果您有动态数量的列要取消透视,您会这样做。
-
@SimonDarr 如果我们需要将所有内容转换为 varchar 怎么办,因为我们不知道我们有多少字段以及每个字段的类型。
标签: sql snowflake-cloud-data-platform unpivot