Amazon Redshift unnest(array[]) 不可用

问题描述 投票:0回答:1

我们之前使用的是天蓝色数据库并迁移到亚马逊红移,因此我正在迁移报告查询。我有相当多的 unnest(array[]) 函数,但我不知道该用什么来代替?

这是我试图修改的查询的简化版本 - 基本上有一列包含字段名称,另一列包含列本身的实际日期。为了使移动过程尽可能简单,我想尽可能保留字段名称列。

选择 rp.id, unnest(数组['colo_l2_subscribed_telstra_nbn_vha_f__c', 'colo_l2_subscribed_telstra_nbn_vha_a__c', 'colo_l2_approved_telstra_nbn_vha_f__c', 'colo_l2_approved_telstra_nbn_vha_a__c', 'colo_l3_subscribed_telstra_nbn_vha_f__c', 'colo_l3_subscribed_telstra_nbn_vha_a__c', 'colo_l3_approved_telstra_nbn_vha_f__c', 'colo_l3_approved_telstra_nbn_vha_a__c', 'colo_l6_subscribed_telstra_nbn_vha_f__c', 'colo_l6_subscribed_telstra_nbn_vha_a__c', 'colo_l6_approved_telstra_nbn_vha_f__c', 'colo_l6_approved_telstra_nbn_vha_a__c', 'in_service_rfs_complete_f__c', 'in_service_rfs_complete_a__c', 'as_built_completed__c']) 作为 field_name, unnest(数组[rot.colo_l2_subscribed_telstra_nbn_vha_f__c, rot.colo_l2_subscribed_telstra_nbn_vha_a__c, rot.colo_l2_approved_telstra_nbn_vha_f__c, rot.colo_l2_approved_telstra_nbn_vha_a__c, rot.colo_l3_subscribed_telstra_nbn_vha_f__c, rot.colo_l3_subscribed_telstra_nbn_vha_a__c, rot.colo_l3_approved_telstra_nbn_vha_f__c, rot.colo_l3_approved_telstra_nbn_vha_a__c, rot.colo_l6_subscribed_telstra_nbn_vha_f__c, rot.colo_l6_subscribed_telstra_nbn_vha_a__c, rot.colo_l6_approved_telstra_nbn_vha_f__c, rot.colo_l6_approved_telstra_nbn_vha_a__c, rot.in_service_rfs_complete_f__c, rot.in_service_rfs_complete_a__c, rot.as_built_completed__c]) 作为 field_date 从 s.项目 rp 左加入 s.otherproject rot on rp.id = rot.project__c

我尝试了几个联合函数,但没有达到预期效果。

amazon-redshift psql unnest
1个回答
0
投票

在 Redshift 中,相当于“array()”函数的是 json_parse()。 此函数采用有效的 JSON 字符串并将其转换为 SUPER 数据类型列。

一旦您将这些数组设置为 SUPER 类型,您就可以取消它们的嵌套。请参阅 https://docs.aws.amazon.com/redshift/latest/dg/query-super.html

您可以在取消嵌套步骤中通过索引(元素)将这些数据数组连接在一起。

或者,您可以使用 json_parse() 创建对象数组,然后取消嵌套。 如果您遇到此问题,请提供一个带有预期输出的简单测试用例,社区可以为您提供一个工作代码示例。

© www.soinside.com 2019 - 2024. All rights reserved.