目前我正在编写一个脚本,该脚本从 Snowflake 查询数据并需要将其插入到胶水脚本中的 DDB 表中。 我可以使用雪花连接器从 Snowflake 轻松查询。我的桌子看起来像这样:
我的 DDB PK 将是 customer_id,其他字段将是任何对象(通常是 json 或数组)。
我已经尝试过:
将从雪花加载的DynamicFrame直接插入DDB,如所示
将 DynamicFrame 保存到 S3,加载“来自 S3 的 json 动态框架”(如 this
将DynamicFrame转换为pandas,将其转换为json并以DDB json格式序列化(如
{'M': {'"customer_id"': {'S': '79075d7c7276e61df7ca6615986f7d05464995245d3f9155f60467c0cb195cf1'}, '"non_personalized"': {'S': "{'Em Alta1': ['loja1', 'loja2', 'loja3']
)
并将其返回给 DynamicFrame 并将其传递给 DDB 连接器。
所有选项都不起作用,并且总是给我以下错误:
An error occurred while calling o122.pyWriteDynamicFrame. The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: L7ASM29EH86UQBMKLL5KUF61VBVV4KQNSO5AEMVJF66Q9ASUAAJG; Proxy: null)
我看到连接器似乎有选项(one和two)可以从DDB工作到关系表。我怎样才能有效地做到相反呢?
提前致谢。
根据我最初的假设,我认为您的数据对于 DynamoDB 来说是错误的。根据您分享的内容:
{'M': {'"customer_id"': {'S': '79075d7c7276e61df7ca6615986f7d05464995245d3f9155f60467c0cb195cf1'}, '"non_personalized"': {'S': "{'Em Alta1': ['loja1', 'loja2', 'loja3']
您可以在这里看到整个项目位于地图内,用
M
表示,但事实不应该是这样。在 DynamoDB 中存储的正确形状应在顶层具有 customer_id
:
{'customer_id': {'S': '79075d7c7276e61df7ca6615986f7d05464995245d3f9155f60467c0cb195cf1'}, 'non_personalized': {'S': "{'Em Alta1': ['loja1', 'loja2', 'loja3']