将datamart用于多个数据库

时间:2012-06-21 20:25:37

标签: sql ssis business-intelligence datamart

我目前正在开发一个使用ERP数据库中的SSIS 2008 r2构建数据集市的项目。

这些数据集必须在具有相同结构的每个数据库中使用(相同的表/字段)。

问题是源表名称根据连接的数据库而变化。但表格结构(元数据)在这些环境之间不会改变。

例如, 数据库1 表名称为 company_name1 $ item 数据库2 表名称为 company_name2 $ item

我正在寻找一种解决方案,使datamart可以用于两个数据库。

我做了一些研究;我发现我的解决方案可以像图中所解释的那样 enter image description here

如图所示,构建数据集市需遵循以下步骤:

  • 要构建数据集市,您需要提取信息和流程 他们通过ETL获得所需的数据集市。这个程序需要 适用于所有数据库

  • 此过程可以通过名为
    的erp数据库中的表来完成 object该表包含有关数据库的所有信息 表,但最有用的字段是表ID,表名和公司 名称

enter image description here

现在,我想使用这个表id,Name Company来选择正确的表,而不必根据表名选择数据,但是对象表和其他表之间没有链接,所以你需要创建一些类型代码或能够创建链接的东西。 在一个坚果壳中,当我想使用数据包的包时,我有插入是公司名称,并且将运行包来填充我的数据集市。

正如一些人所说,我应该使用这种类型的sql过程 使用YourDataBaseName;

CREATE PROCEDURE GetMyData
    @aCompany NVARCHAR(50) = NULL,
    @tbl_ID INT = 0
AS
    SET NOCOUNT ON;
    DECLARE @tableName NVARCHAR(50)
    DECLARE @aQuery NVARCHAR(4000) 

    SELECT @tableName = [Name]
    FROM [object]
    WHERE [Company Name] = @aCompany AND [ID] = @tbl_ID

    SET @aQuery = 'SELECT * FROM ' + @tableName
    EXEC(@aQuery)
GO

其他一个也很有趣,表示SSIS允许在源和目的地中使用变量名。我只是需要提供使价值变化的机制。也许这是一个包含数据流或运行时参数集的foreach枚举器。 两个建议的解决方案都很棒,但仍然不清楚如何做到这一点,我希望现在我已经解释了我的问题,我会得到一个更具体的答案

0 个答案:

没有答案