使用 kinesis 流在 redshift 中创建物化视图

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

我使用下面的查询在 redshift 中创建金属化视图,

`CREATE MATERIALIZED VIEW test_sch."new_vw" AUTO REFRESH YES AS
SELECT approximate_arrival_timestamp,
JSON_PARSE(kinesis_data) as data,
kinesis_data.dynamodb."Keys"."Id"."S" as prospectId  ,
kinesis_data.dynamodb."NewImage"."Name"."S" as prospectName,
kinesis_data.dynamodb."NewImage"."SessionId"."S" as gaSessionId
from kds_schema."test-stream-dev"
WHERE CAN_JSON_PARSE(kinesis_data);`

错误:- 不允许将列数据导航作为其超类型。

我尝试使用如下所示的超级键解析

kinesis_data.dynamodb."Keys"."Id"."S" as prospectId 

但是无法导航SUPER键

amazon-redshift amazon-redshift-spectrum
1个回答
0
投票

“kinesis_data”是 varchar,“data”是 super,因此您不能通过 varchar 名称引用 super 字段。你需要使用“数据”。

我还相信您需要将 JSON_PARSE() 和 CAN_JSON_PARSE() 移动到子查询或 CTE。好像我没记错一样 Redshift 将需要此级别的 SELECT 才能使用这些字段。

CREATE MATERIALIZED VIEW test_sch."new_vw" AUTO REFRESH YES AS
SELECT approximate_arrival_timestamp,
  data,
  data.dynamodb."Keys"."Id"."S" as prospectId,
  data.dynamodb."NewImage"."Name"."S" as prospectName,
  data.dynamodb."NewImage"."SessionId"."S" as gaSessionId
from (
  SELECT approximate_arrival_timestamp, JSON_PARSE(kinesis_data) as data
  FROM kds_schema."test-stream-dev"
  WHERE CAN_JSON_PARSE(kinesis_data)
);
© www.soinside.com 2019 - 2024. All rights reserved.