趋近智
您已成功提取数据并对其进行了转换,以完成清洗、构建和丰富。数据现在已准备好传送到其最终目的地。但是,在实际加载开始之前,有一个重要步骤:确保数据完全符合目标系统(如数据库表或数据仓库维度)的结构或模式。这就是模式映射的作用。
将您转换后的数据视为准备装载到船只(您的目标系统)上的货物。船只具有为特定类型货物设计的特定容器(字段或列)。模式映射是装载清单;它清楚地告知装载人员,哪一部分转换后的数据应放入船上的哪个容器。没有此映射,数据可能会进入错误的位置、被误解,或完全无法加载。
模式映射是定义转换后的源数据字段与目标系统模式中字段之间对应关系的过程。它充当一个转换层,确保每部分数据都能在目的地找到其正确位置。
想象一下,一份已转换的客户数据拥有 customer_id、first_name、last_name 和 signup_date 等字段。您的目标数据仓库表 DimCustomer 可能包含名为 CustomerID、FirstName、LastName 和 RegistrationTimestamp 的列。模式映射定义了这些连接:
customer_id (源) 映射到 CustomerID (目标)first_name (源) 映射到 FirstName (目标)last_name (源) 映射到 LastName (目标)signup_date (源) 映射到 RegistrationTimestamp (目标)数据很少能在没有指导的情况下,从源转换输出完美地流入目标系统输入。映射是必要的,原因如下:
user_email 对 EmailAddress)。映射弥合了这一差距。'20231026'(源字符串)映射到 OrderDate(目标日期类型)需要一个转换函数。source.area_code 和 source.phone_number 映射到单个 target.PhoneNumber 字段。source.full_address 可能需要映射到单独的 target.Street、target.City 和 target.ZipCode 字段。target.Status 设置为“待处理”)。它们还可以根据源字段定义简单的计算。例如,如果目标需要 TotalPrice 字段,映射可以根据源字段定义它:总价=数量×单价。让我们看看您会遇到的典型映射模式:
source.product_id -> target.ProductIDsource.order_total (字符串) -> target.OrderTotal (小数)source.first_name, source.last_name -> target.FullName(例如,使用 target.FullName = source.first_name + ' ' + source.last_name 这样的规则)source.timestamp (日期时间) -> target.Date, target.Time'Processed' -> target.RecordStatussource.price, source.tax_rate -> target.PriceWithTax(例如,使用 含税价格=价格×(1+税率))source.country_code(例如,'US')-> target.CountryName(例如,'United States')通过查找表。您在ETL过程中实际如何定义这些映射?这取决于您使用的工具和技术:
# 映射的Python字典示例
mapping_rules = {
'CustomerID': 'source_data.user_id',
'Email': 'source_data.email_address',
'RegistrationDate': 'convert_to_date(source_data.signup_dt)',
'Status': "'Active'" # 分配一个默认字符串值
}
让我们通过一个例子来巩固这一点。假设您的转换数据如下所示(按行):
| 用户ID | 名 | 姓 | 注册日期 | 城市 | 省份 |
|---|---|---|---|---|---|
| 101 | Alice | Smith | 2023-01-15T10:00Z | Newark | NJ |
| 102 | Bob | Jones | 2023-02-20T14:30Z | Trenton | NJ |
您的目标数据库表 Customers 具有以下结构:
CustID (整数, 主键)FullName (字符串)Location (字符串)RegisteredDate (日期)IsActive (布尔值)模式映射规则可能如下:
user_id -> CustID (直接映射,可能进行从字符串/数字到整数的类型转换)f_name, l_name -> FullName (用空格组合:f_name + ' ' + l_name)city, state -> Location (用逗号组合:city + ', ' + state)registered_on -> RegisteredDate (提取日期部分,转换为日期类型)IsActive (分配默认值:True)这是说明这些映射的图表:
映射规则将转换后的源数据结构中的字段连接到目标表结构,包括组合和默认值。
映射通常是直接的,但也可能带来难题:
NULL、加载默认值或引发错误。模式映射是数据加载前的最后对齐步骤。它确保清洗、转换后的数据精确符合目标系统的结构和要求,从而使后续加载过程更顺畅,并使生成的数据准确且可用于分析。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造