根据 Redshift 中其他表的条目在表中插入值
Posted
技术标签:
【中文标题】根据 Redshift 中其他表的条目在表中插入值【英文标题】:Insert values in a table based on entries of other table in Redshift 【发布时间】:2020-02-08 21:57:27 【问题描述】:我在 AWS Redshift 中有两个表,需要根据另一个表的条目将一些值插入到另一个表中。我想知道是否可以使用 AWS GLUE 作业来完成任务,如果可以,这是个好主意吗?或者我应该使用 Redshift 中的查询编辑器/sqlworkbench 来完成任务。
表 1 具有以下架构:Person(id,firstName,Lastname)
表 2 具有以下架构
Selection(perId,check)
如果Person 表的firstName
和lastName
的串联位于['fullName1', 'fullName2',..]
中,则在选择表中插入1,否则插入0 和对应的person id。
示例
列表值为:['JohnLuie' , 'FranklinWatson']
人员表
Id | Firstname | lastName
04 | John | Luie
09 | Ben | Johnson
最初选择表是空的。所以在检查了person表上的条件之后就是如果
(Person.firstName+ Person.lastName) in ['JohnLuie' , 'FranklinWatson]
然后在 Selection.check 中插入 1 或 0,并在 Selection.perId 中使用 person.id
所以在执行任务后,选择表将如下所示:
选择
PerId | check
04 | 1
09 | 0
我想知道是否可以通过运行 aws-glue 作业来执行以下任务。这两个表都处于红移状态。
【问题讨论】:
请编辑您的问题以提供示例...也就是说,请提供一些示例,说明一个表格中的内容以及您希望在另一表格中出现的内容。有可能这可以通过简单的SQL语句来执行,但不知道细节,是不能说的! 我已经编辑了问题并添加了一个示例。???? 列表(['JohnLuie' , 'FranklinWatson]
)从何而来?
这些是一些预定义的值。列表值不是来自任何表。
使用 Glue 绝对可以做到这一点,但这会使事情变得比需要的复杂得多。对于 Glue 来说,这确实不是一个好的用例。当数据已经在 Redshift 中可用时,只需按照 John 的建议直接使用 SQL。
【参考方案1】:
您可以在 SQL 查询中执行此操作,例如:
INSERT INTO Selection
(
SELECT
Id,
CASE WHEN firstName || lastName IN ['JohnLuie' , 'FranklinWatson] THEN 1 ELSE 0 END
FROM person
)
【讨论】:
以上是关于根据 Redshift 中其他表的条目在表中插入值的主要内容,如果未能解决你的问题,请参考以下文章