使用 Talend 填充事实表

Posted

技术标签:

【中文标题】使用 Talend 填充事实表【英文标题】:Populate Fact Table with Talend 【发布时间】:2015-10-19 08:25:20 【问题描述】:

我需要填充我的 mysql 表。我有以下维度架构。

我所有的外键都在事实表中。

每个主题都有一个 CSV 文件。 假设excel1.csv对应thema1,excel2.csv对应thema2。

所有主题、地区、部门、mois 表均已设置。所以我手动填写:

例如主题表:

id主题 |主题

1 |主题1

2 |主题2

区域表:

idRegion |地区

1 |以色列国防军

2 |北方

3 |布列塔尼

部门表:

id部门 | idRegion |部门

1 | 1 |埃松

2 | 1 |巴黎

3 | 1 |塞纳河与马恩河

4 | 2 |加来海峡

5 | 2 |皮卡迪

6 | 3 |卡尔瓦多斯

7 | 3 |菲尼斯泰尔

安妮表:

id安妮 |安妮

1 | 2013

2 | 2014

3 | 2015

Mois 表:

idMois |伊德安妮 |莫伊斯

1 | 3 |詹维尔

2 | 3 |费夫里耶

3 | 3 |火星 ...

现在我们取thema1对应的excel1.csv文件(所以idtheme=1):

NOM/地区/部门/Mois/Poids

阿德里安/以色列国防军/巴黎/Février/85

Louis/IDF/Paris/Janvier/84

查尔斯/布列塔尼/菲尼斯泰尔/扬维尔/90 ...

感谢 Talend 中的 tMap 转换,我知道如何填写我的客户表: 我明白了:

idClient/NOM/Poids

1/阿德里安/85

2/路易斯/84

3/查尔斯/90

我希望我的事实表是这样的:

idTheme/idDepartement/idClient/idMois

1/2/1/2

1/2/2/1

1/7/3/1

这样它将包含其他维度表的外键。

我知道如何填写维度表(大部分时间是手动填写,并使用 tMap 填写客户表),但我想填写我的事实表。

【问题讨论】:

【参考方案1】:

如果您的数据库中有这个模型,并且您的表是使用所有主键和外键创建的,但仍然是空的,那么请创建一个按以下顺序填充从外到内的数据的作业:Region、departement、Annee、 Mois、主题、客户、满意度。

外键与任何其他字段一样填充,但已在创建表时定义的 constraint 应通过连接数据获得。

对于事实表,您需要读取之前填充的维度和join 所有维度的所有外键。

【讨论】:

是的,我知道我必须填写维度表,但我的问题是如何填写?例如,当我填写 Region 时没关系,但我需要填写部门,但我不知道如何在其中设置 idRegion,因为它是外键。 @AdriL。为了更清楚起见,表的所有字段都保存了您在进行选择时看到的数据,但有时我们需要在字段上添加一些条件,称为约束,外键是数据字段,其数据应存在于主键字段中父表的。 是的,我知道我写的创建 CREATE TABLE IF NOT EXISTS Region(idRegion INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Region VARCHAR(250) NOT NULL);如果部门不存在则创建表(idDepartment INT NOT NULL AUTO_INCREMENT PRIMARY KEY,idRegion INT NOT NULL,CONSTRAINT fk_Dep_region FOREIGN KEY (idRegion) REFERENCES Region(idRegion),Department VARCHAR(250) NOT NULL);但问题是当我的 csv 文件带有 nom/region/dpartment/mois/poids/...

以上是关于使用 Talend 填充事实表的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL 存储过程填充事实表

查找代理键和填充事实表

无法使用 Talend 上传到 Snowflake 阶段,NoSuchMethodError

在 Oracle 中填充事实表

在 SSIS 中的数据仓库中填充事实表的技术

如何用 Pentaho Kettle 填充我的事实表