【问题标题】:Importing one to many relations in a Join transformation Azure Synapse在连接转换 Azure Synapse 中导入一对多关系
【发布时间】:2022-11-29 04:00:18
【问题描述】:

我有两个数据源加载到 Azure Synapse 中。两个原始数据源都包含一个“Apple”表。

我将它们合并到我的 Enriched 数据存储中的单个“Apple”表中。

SELECT * FROM datasource1.apple JOIN datasource2.apple on datasource1.apple.id = datasource2.apple.id

但是,这两个数据源还包含一对多关系AppleColours。

请有人帮助我理解在我的丰富区域中创建单个 AppleColours 表的正确方法吗?

【问题讨论】:

  • 数据源意味着你指的是专用的sql pool?
  • 原始数据作为镶木地板文件加载到 Azure Gene 2 srotage 中。这些需要为 Enriched 商店合并。我没有设置将哪个数据存储用作丰富的存储

标签: sql powerbi azure-synapse data-transform


【解决方案1】:

当您想要合并它们时,您需要来自这两个来源的数据。 JOIN(INNER JOIN) 将仅带来 datasource1 和 datasource2 中的 apple.id。 您应该尝试 CROSS JOIN

对于 AppleColours 1 到多关系,有 2 种方法:

  1. 您可以直接将颜色放入 Apple 表中,在这种情况下不需要单独的 AppleColours 表 Apple ID| Color 1 | red 2 | green

    为了将数据放入 Color 列,这次使用 Apple 表和 AppleColours 的 colorID 上的 AppleColours 进行另一个 JOIN

    1. 创建一个带有 ID 和颜色的单独表 AppleColours。在此表中,使用 CROSS JOIN 从两个数据源导入两个 AppleColours 表 在 Apple 表中添加一个名为 AppleColorId 的列,它具有来自 AppleColours 的 id

    如果您想要一个包含所有数据且不需要任何连接来确定苹果颜色的 Applet 表,请使用方法 1。 如果您想要一个内部数据最少的“苗条”苹果表,请使用方法 2。 在这种情况下,要获得苹果色,您必须对 AppleColour 表进行额外的 JOIN(INNER JOIN)

【讨论】:

  • 感谢您的回答。因此,如果我对方法 2 是正确的,它将导致目标只有一个“AppleColours”表,其中包含列:id, applecolours_id_source_1, applecolours_id_source_2, colour_value。然后,当我填充苹果记录时,我只需要使用相应的 _soruce_x 列在 AppleColours 表中查找 id?
【解决方案2】:

也许包括一个创建联合的子查询(你只会得到一个),但你的问题仍然是,因为每个表都有自己与颜色的关系并且你正在加入两个,同一个项目可以给你两种不同的颜色。我的建议:做一个开关只选择一个,如果第一个是空的,选择第二个,如果第二个也是空的,一个默认值(一些颜色代码)。其他选项是使用较低的 id,因为它是早期创建的,或者较高的,因为它是最后一个......

像那样的东西

SELECT datasource1.*, datasource2.*, Q.Name, Q.Value FROM datasource1.apple 
JOIN datasource2.apple on datasource1.apple.id = datasource2.apple.id
JOIN
(SELECT ColourID, Name, Value FROM datasource1.AppleColours UNION SELECT ColourID, Name, Value FROM datasource2.AppleColours) Q
ON Q.ColourID = COALESCE(datasource1.ColourID, datasource2.ColourID, {DefaultColor})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-25
    • 2014-05-26
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2021-09-25
    相关资源
    最近更新 更多