【问题标题】:I have staging table and need a dimension table. I also need to add a surrogate key. I am using SSIS. How do I go about it?我有临时表,需要一个维度表。我还需要添加一个代理键。我正在使用 SSIS。我该怎么做?
【发布时间】:2017-04-10 01:31:49
【问题描述】:

我的暂存表是[sabyastaging].[dbo].[CustomerSTG],包含以下字段:[customer#],[cust-name],[address],[telephone#]

我需要一个维度表 (Customer),作为字段:[customer#],[address][telephone#]

我还需要一个代理键。我正在使用管理工作室和 SSIS。我该怎么做?

帮助将不胜感激!

【问题讨论】:

  • 到目前为止你尝试过什么?请考虑发布MCVE

标签: sql-server ssis


【解决方案1】:

首先创建目标维度表:

CREATE TABLE Customer (
    CustomerSK int IDENTITY(1,1) PRIMARY KEY,
    CustomerNumber int,
    CustomerName VARCHAR(200),
    CustomerAddress VARCHAR(200)

SK 是使用自动递增列创建的,该列兼作表的主键。仓库中的维度表和事实表不应该有任何外键引用,尤其是回到暂存区。此外,我会避免在您的表或列名中使用“#”之类的字符,并且我会尝试将您的所有名称拼写成人类可读的形式 - 毕竟,这些表可能面向最终用户并且需要简单理解。

启动 Visual Studio 并创建 SSIS 项目。为您的源表和目标表创建连接。将“数据流”任务拖到画布上,然后双击它。拖动 OLE DB 源连接器,并提供源数据库和临时表的连接信息。对目标维度表执行相同操作。

单击并将数据流连接器从源拖到目标 - 您将有一条从源连接到目标连接的绿线。双击目标连接,您将看到一种将输入列映射到输出列的方法 - 只需单击并从源拖动到目标。

按 F5,它应该会运行。

【讨论】:

  • 好答案!此外,如果您使用的是最新版本的 SQL Server,您可以使用具有速度优势的序列,并且如果需要,您还可以在插入暗记录之前知道该值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-25
  • 2014-07-06
  • 2016-06-30
  • 2017-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多