Azure sql database 如何使用Azure Datafactory v2填充星型架构

Azure sql database 如何使用Azure Datafactory v2填充星型架构,azure-sql-database,azure-data-factory-2,Azure Sql Database,Azure Data Factory 2,我有几个源提要,我想使用Azure data Factory v2将数据提取到传统的星型模式数据库(Azure SQL数据库)中,以用于OLAP目的 大多数源提要对应于一个维度,因此它们映射到我的数据仓库数据库中的模式,除了内部代理键之外 然后我有另一个feed,它与事实表相当。其中有许多标识符对应于维度表的业务键 复制活动的Azure Data Factory v2文档建议尽可能使用(默认) 因此,我的问题是: 同步维度表的最佳方法是什么。我不想删除现有数据并重新填充它,因为它会破坏我的sur

我有几个源提要,我想使用Azure data Factory v2将数据提取到传统的星型模式数据库(Azure SQL数据库)中,以用于OLAP目的

大多数源提要对应于一个维度,因此它们映射到我的数据仓库数据库中的模式,除了内部代理键之外

然后我有另一个feed,它与事实表相当。其中有许多标识符对应于维度表的业务键

复制活动的Azure Data Factory v2文档建议尽可能使用(默认)

因此,我的问题是:

  • 同步维度表的最佳方法是什么。我不想删除现有数据并重新填充它,因为它会破坏我的surragate键,它将被我的事实表引用。我正在考虑使用upsert存储过程,它检查行是否已经存在,并执行更新而不是插入。这是不是会很慢?是否有更好的方法(可能以某种方式使用预拷贝脚本?)

  • 在填充事实表时,我希望查找维度的所有相应ID(surragate键),并在插入数据之前将所有业务键转换为这些ID。实现这一目标的推荐方法是什么?同样,存储过程也可以,但我担心它太慢了。有没有更好的方法

  • 我(和我的一些朋友)知道的最好的方法是合并数据

    要实现这一点,请创建一个暂存表(同一目标服务器上的相同或不同数据库),该表的结构仅与源表+PK相同。 因此,ADF中的过程应分为两个步骤:

  • 截断目标(暂存)表
  • 将源中的所有数据插入暂存
  • 运行包含MERGE语句和其中所有必需逻辑的存储过程
  • 采用这种方法,您将保持:

    • 将数据放入暂存表(大容量)时的最佳性能
    • 向上插入(更新/插入)目标表的最快方法
    • 能够实现复杂的业务逻辑
    • 必要时使用SCD(缓慢改变尺寸)
    • 减少磁盘操作量
    下面的文章可以帮助您理解这个过程并构建整个合并语句:[]

    这是一个非常常见的场景,所以你给了我一个新博客帖子的想法。Thx


    我希望这对您有所帮助。

    谢谢您的反馈。与此同时,我发现了这篇博文,但它有点旧(ADF v1),因此您必须了解许多现在通过向导完成的JSON内容:。如果你为ADFv2写一个,那就太好了:)顺便问一句,我可以下载你的SCD合并向导工具的安装程序或可执行版本吗?我很想尝试一下,但似乎我必须下载源代码并构建它?干杯,将尝试您推荐的流量。抱歉@jbx,由于某些原因,我错过了您的所有评论。SCD合并向导有自己的MSI文件:谢谢。当时我确实尝试过(我想我已经找到了安装程序),但是它有一些bug,最后我编写了自己的SCD查询。由于某些原因,连接到Azure SQL数据库导致它经常无法连接(重试有时有效),并且每次查询我都必须重新输入密码(即使我按下了save password),有时在选择我想要的字段是SCD1和SCD3时,它会感到困惑,最终放弃。好主意。