使用 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 填充事实表的主要内容,如果未能解决你的问题,请参考以下文章