趋近智
你已成功从各种来源提取了数据,并精心转换以满足质量标准和业务需求。现在,这些经过处理的数据将去往何处?它们需要载入到目标系统,例如数据仓库、数据库或数据湖中,以便用于分析、报告或驱动应用程序。
然而,你不能随意倾倒数据。目标系统对数据如何组织有特定的结构和规则。这种结构由目标模式定义。将模式看作数据目的地的蓝图。它规定了布局、允许的数据类型以及必须遵守的约束。在尝试执行‘载入’步骤之前,完全了解此模式是十分重要的。
关系型数据库或数据仓库是ETL的常见目标,其模式通常定义以下元素:
客户、产品和订单的表。客户表,列可能包含customer_id、first_name、last_name、email和registration_date。INTEGER(整数)、VARCHAR(可变长度文本)、CHAR(固定长度文本)、DATE(日期)、TIMESTAMP(时间戳)、BOOLEAN(布尔值,真/假)以及DECIMAL或NUMERIC(用于带有小数部分的数字,例如货币)。数据类型通常包含大小限制,例如VARCHAR(100)表示最多100个字符的文本。PRIMARY KEY(主键):唯一标识表中的每一行(例如,customer_id)。不能为null。FOREIGN KEY(外键):将一个表中的列链接到另一个表中的PRIMARY KEY,强制执行关系(例如,将orders.customer_id链接到customers.customer_id)。NOT NULL(非空):确保列必须始终有值;它不能是空的。UNIQUE(唯一):确保列中的所有值在不同行之间是唯一的。CHECK(检查):强制执行特定条件(例如,order_quantity > 0)。让我们来看一个数据库中orders表的简单模式示例:
一个图表,代表
orders表的模式,展示了列名、它们的数据类型以及应用的主键和外键等约束。
在此示例中:
orders。order_id是整数,并用作主键,这意味着每个订单都必须具有唯一的ID。customer_id是链接到customers表的整数。order_date必须是有效的日期,并且不能留空(NOT NULL)。total_amount是一个十进制数字,总共允许最多10位数字,其中小数点后有2位(适用于货币)。它可以留空(NULL)。目标模式在载入过程中充当守门员。你转换后的数据必须严格遵守此模式:
total_amount(DECIMAL)列中会引起错误。同样,如果目标系统要求'YYYY-MM-DD'格式,将“2023-Feb-28”载入到order_date(DATE)列中可能会失败。NOT NULL约束,你不能载入没有order_date的订单记录。由于PRIMARY KEY约束,你不能载入order_id已存在的订单。如果customer_id是外键,你通常不能载入在customers表中不存在customer_id的订单。VARCHAR(100))。载入超出限制的文本可能会导致错误或数据截断(字符丢失),具体取决于系统配置。忽视目标模式就像是试图将方钉硬塞进圆孔。这必然会导致载入过程中的问题。错误可能包括载入作业失败、数据被拒绝、数据截断,或者如果类型转换隐式发生但有误,则可能出现数据损坏。
因此,在开始任何数据载入之前,你必须完全了解目标系统模式的结构、数据类型和约束。这些信息指导转换阶段的最后步骤(确保数据类型和格式与目标匹配),并且对于正确配置载入过程十分重要。下一节“模式映射”将基于此了解直接进行说明,阐明如何明确地将转换后的数据字段连接到目标模式列。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造