Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database ETL如何改变表结构_Database_Etl_Data Warehouse - Fatal编程技术网

Database ETL如何改变表结构

Database ETL如何改变表结构,database,etl,data-warehouse,Database,Etl,Data Warehouse,我尝试建立一个基于操作数据库的数据仓库。在操作数据库中,我有一些表来描述位置信息,它们是规范化的表。如下图所示: MM_CITY { CITY_ID; CITY_NAME; } MM_DISTRICT { CITY_ID; DISTRICT_ID; DISTRICT_NAME; } MM_REGION { DISTRICT_ID; REGION_ID; REGION_NAME; } FACT_TABLE { REGIO

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

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)来完成数据传输?怎么做?任何参考资料都将不胜感激

提前谢谢


评论:


这是我自己的困惑,实际上,如果地区有城市ID、地区ID和地区ID,它不需要做更多的ID命名。原始的ID系统足以在DW中使用。

在这里解释这一切有点复杂。首先,您需要了解数据仓库是如何设计的。然后必须使用诸如SSIS之类的ETL工具来设计数据仓库。您将获得许多有关SSIS的教程,SSIS是一种用于进行ETL的Microsoft产品

因此,我建议您使用SSIS ETL工具进行第一次ETL。稍后,您可能会使用广泛使用的ETL工具,如Informatica

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

  • 这些是常规链接,您可以在其中选择逻辑并在场景中实现


    祝你好运。

    在这里解释这一切有点复杂。首先,您需要了解数据仓库是如何设计的。然后必须使用诸如SSIS之类的ETL工具来设计数据仓库。您将获得许多有关SSIS的教程,SSIS是一种用于进行ETL的Microsoft产品

    因此,我建议您使用SSIS ETL工具进行第一次ETL。稍后,您可能会使用广泛使用的ETL工具,如Informatica

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

  • 这些是常规链接,您可以在其中选择逻辑并在场景中实现


    祝你好运。

    在这里解释这一切有点复杂。首先,您需要了解数据仓库是如何设计的。然后必须使用诸如SSIS之类的ETL工具来设计数据仓库。您将获得许多有关SSIS的教程,SSIS是一种用于进行ETL的Microsoft产品

    因此,我建议您使用SSIS ETL工具进行第一次ETL。稍后,您可能会使用广泛使用的ETL工具,如Informatica

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

  • 这些是常规链接,您可以在其中选择逻辑并在场景中实现


    祝你好运。

    在这里解释这一切有点复杂。首先,您需要了解数据仓库是如何设计的。然后必须使用诸如SSIS之类的ETL工具来设计数据仓库。您将获得许多有关SSIS的教程,SSIS是一种用于进行ETL的Microsoft产品

    因此,我建议您使用SSIS ETL工具进行第一次ETL。稍后,您可能会使用广泛使用的ETL工具,如Informatica

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

  • 这些是常规链接,您可以在其中选择逻辑并在场景中实现


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


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

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


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

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


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

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


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

    希望这就是您想要的,一个包含地理详细信息的维度

     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子句指定。

    希望这是您想要的,一个包含地理详细信息的维度

     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子句指定。

    希望这是您想要的,一个包含地理详细信息的维度

     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条款指定。

    希望这就是您想要的