You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Synapse中Join转换下一对多关系的导入方案咨询

合并Azure Synapse中两个数据源的AppleColours表方案

要在Enriched区域创建单一的AppleColours表,核心思路是合并两个数据源的AppleColours数据,并关联到你已生成的合并后Apple表,确保数据的关联性和有效性。以下是具体实现方式:

基础合并方案(保留所有关联记录)

假设Enriched区域的合并Apple表名为enriched.apple,两个数据源的AppleColours表分别为datasource1.applecolours和datasource2.applecolours,可以通过UNION ALL合并两个表的记录,再关联到合并后的Apple表过滤无效数据:

SELECT 
    ac.*
FROM (
    -- 合并两个数据源的AppleColours全量数据
    SELECT * FROM datasource1.applecolours
    UNION ALL
    SELECT * FROM datasource2.applecolours
) AS ac
-- 只保留与合并后Apple表匹配的记录
JOIN enriched.apple ea ON ac.apple_id = ea.id

带来源标识的合并方案

如果需要区分每条记录来自哪个数据源,可以新增一个来源字段:

SELECT 
    ac.apple_id,
    ac.colour,
    -- 其他你需要的字段
    ac.data_source
FROM (
    SELECT *, 'datasource1' AS data_source FROM datasource1.applecolours
    UNION ALL
    SELECT *, 'datasource2' AS data_source FROM datasource2.applecolours
) AS ac
JOIN enriched.apple ea ON ac.apple_id = ea.id

去重处理(可选)

如果两个数据源存在重复的AppleColours记录(同一apple_id对应相同的颜色信息),可以将UNION ALL替换为UNION自动去重,或者使用DISTINCT关键字:

SELECT DISTINCT
    ac.*
FROM (
    SELECT * FROM datasource1.applecolours
    UNION ALL
    SELECT * FROM datasource2.applecolours
) AS ac
JOIN enriched.apple ea ON ac.apple_id = ea.id

注意事项

  • 确保两个数据源的AppleColours表字段名称、数据类型、顺序一致,如果不一致,建议显式指定字段而非使用*,避免报错。例如:
    SELECT 
        ac.apple_id,
        ac.colour_name,
        ac.hex_code
    FROM (
        SELECT apple_id, colour_name, hex_code FROM datasource1.applecolours
        UNION ALL
        SELECT apple_id, colour_name, hex_code FROM datasource2.applecolours
    ) AS ac
    JOIN enriched.apple ea ON ac.apple_id = ea.id
    
  • 若合并后的Apple表对id做了调整(比如生成了新的主键),需要调整关联条件,确保AppleColours的apple_id能正确匹配到新表的主键。

内容的提问来源于stack exchange,提问作者atoms

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:10:35