我尝试基于操作数据库构建DW。 在操作数据库中,我有一些表来描述位置信息,它们是规范化的表。 如下所示:

MM_CITY
{
    CITY_ID;
    CITY_NAME;
}

MM_DISTRICT
{
    CITY_ID;
    DISTRICT_ID;
    DISTRICT_NAME;
}

MM_REGION
{
    DISTRICT_ID;
    REGION_ID;
    REGION_NAME;
}

FACT_TABLE
{
    REGION_ID; 
    COST;
}

我想建立一个区域维度并将其与事实表联系起来,如下所示:

REGION_DIMENSION
{
    REGION_ID;
    REGION_NAME;
    DISTRICT_NAME;
    CITY_NAME
}

我可以使用SQL连接来做到这一点,但是考虑到其他方面,仅通过编写SQL很难将原始数据库中的数据传输到新的DW中。

当表结构更改时,是否有任何ETL工具(如Kettle)完成数据传输? 怎么做? 任何参考资料将不胜感激。

提前致谢。


评论:

这是我自己的困惑,实际上,如果REGION_DIMESNION具有CITY_ID,DISTRICT_ID和REGION_ID,则无需进行更多ID命名。 原始ID系统足以在DW中使用。

===============>>#1 票数:2

在这里解释所有内容都有些复杂。 首先,您需要了解数据仓库的设计方式。 然后必须使用ESIS工具(如SSIS)来设计数据仓库。 您将获得有关SSIS的大量教程,SSIS是用于执行ETL的Microsoft产品。

因此,我建议您将SSIS ETL工具用于您的第一个ETL。 稍后,您可以使用广泛使用的ETL工具,例如Informatica。

我在这里提供一些链接。 请参考那些。

  1. 创建第一个数据仓库
  2. SSIS1
  3. SSIS2
  4. SSIS3教程
  5. SSIS4教程

这些是常规链接,您可以在其中提取逻辑并在方案中实现。

祝好运。

===============>>#2 票数:1

Aditya的建议是正确的。 除非您正在管理一个非常复杂的ETL流程,否则最好将表更改隔离在ETL流程之外,然后相应地更新您的包。

您可以管理模式更改,甚至可以自动使用biml等语言创建新的包/表。 如果您每年要管理100个表更改,那么这样做可能是值得的,但是对于少量更改,所做的努力将远远超过其收益

===============>>#3 票数:0 已采纳

希望这就是您想要的,一个具有“地理”详细信息的维度。

 DIM_GEOGRAPHY
    {
    PK,
    CITY_ID,
    CITY_NAME,
    DISTRICT_ID,
    DISTRICT_NAME,
    REGION_ID,
    REGION_NAME
    }

    FACT_TABLE
    {
        PRIMARY_KEY,
        CITY_ID; 
        COST;
    }

您也可以像这样查询相同的结构,

SELECT 
DIM.DISTRICT_NAME AS 'District_Name', 
SUM(F.COST) AS 'Total_Cost'    

FROM

FACT F 
INNER JOIN DIM_GEOGRAPHY DIM 
ON F.CITY_ID = DIM.CITY_ID

GROUP BY DIM.DISTRICT_NAME

-- WHERE DIM.REGION_NAME = 'XYZ'

在这里,您将获得由where子句指定的特定区域的区域明智的总成本。

  ask by linpingta translate from so

未解决问题?本站智能推荐: