3. 创建数据模型
定义数据源并创建一个简单的数据模型
本节将介绍数据建模的核心概念,帮助您掌握如何使用 Recurve 创建一个简单的数据转换用例。
Recurve 中的资产
在 Recurve 中,资产是构建数据工作流的核心要素。可以将其视为数据转换过程中创建和管理的关键组件,每种资产类型都发挥着特定作用,共同作用将原始数据转化为有价值的洞察。
在 数据建模 中,主要使用以下几类资产:
数据源(Sources): 指向原始数据,便于连接并记录数据的来源。
模型(Models):处理数据的查询,通过转换生成结构化的、适合分析的数据集。
Jinja 宏和变量(Jinja macros and variables):Jinja 模板工具,为 SQL 添加编程逻辑,使转换过程更具动态性和可维护性。
数据建模流程
Recurve 的数据建模流程遵循逻辑步骤,帮助您构建和验证转换工作流。
定义源数据:首先定义代表原始数据表的源数据,便于描述和记录数据的来源。
创建数据模型:在源数据基础上创建数据模型,将原始数据转化为有用的分析数据集。每个模型表示一个特定的转换步骤,并逐步构建。
配置物化方式:指定模型结果在数据仓库中的物化方式。
添加数据测试:为模型添加数据测试,以确保其正确运行。每次模型成功构建后,这些测试会自动执行。
建议在开发周期中包含以上步骤,以确保转换在应用到生产数据之前正常运行。
前提条件
以下操作示例使用由 dbt 社区提供的 jaffle_shop
数据集(一个虚构的电商商店)。您可以按照该仓库中的指南生成数据并将其加载到目标数据库: jaffle-shop-generator。
操作流程
让我们通过实际步骤体验 Recurve 的数据建模流程。
首先,在 数据开发/ Data development 仪表板中打开您创建的项目。默认情况下,Recurve 将导航至“设计/ Design”部分,在这里完成所有转换活动。
定义源数据
请按照以下步骤操作:
在“模型/ Models ”选项卡中,点击“+”图标并选择“添加源/ Add source”。
在打开的窗口中:
选择连接类型。
选择目标连接,即您在 2. 创建项目 中已设置好的连接。
点击“下一步/ Next”后,Recurve 将显示目标连接中所有可用的表。
选择所需的原始表或模型。
在此示例中,我们选择
jaffle_shop
架构下的所有表。
点击“添加源/ Add source”。
选定的表将被添加到“数据源/ Sources”文件夹中,并按架构名称分组。
创建数据模型
为了展示数据模型的动态性和模块化,我们将创建三个模型:
此暂存模型( Stage model )通过从原始客户表customers
中选择相关字段(如customer_id
,customer_name
)来标准化客户数据。
此过程使用 Jinja 的 {{ source() }}
函数来引用前一部分中定义的原始表。
按照以下步骤创建每个模型:
在“模型/ Models”选项卡中,点击“+”图标并选择“新建 SQL 模型/ New SQL model”。
提供模型名称,然后点击“创建/ Create”。
新模型将被放置在“模型/ Models”文件夹中。
打开模型编辑器并粘贴查询。
点击“保存/ Save”确认更改。
点击“预览/ Preview”以查看查询输出,结果将在“结果/ Result”选项卡中显示。
请按照上述步骤创建其他两个模型。
现在,我们已经创建了两个标准化原始数据的暂存模型,以及一个汇总并整合结果的模型,可以在“数据血缘/ Data linage”中查看它们,以更好地理解它们之间的关系。
打开一个模型,并切换到“血缘视图/ Lineage view”选项。这将显示一个 DAG(有向无环图),展示从原始数据到最终下游模型的资产关系。
数据血缘是通过 source()
和ref()
函数实现的,这些函数会自动跟踪资产的依赖关系。
配置物化方式
您可以具体配置模型在数据仓库中的物化方式。
默认情况下,所有模型的物化方式为 表格/ table 。
按照以下步骤操作:
打开模型编辑器。
在“物化方式/ Materialization”字段中,选择所需的物化方式选项。
继续使用我们的三个示例模型,我们可以将暂存模型物化为视图,以确保它们反映最新的源数据,并最大限度地减少存储成本。另一方面,汇总模型可以物化为表格,因为它是最终模型,且查询频率较高。
添加数据测试
即将上线: 数据测试部分即将上线。
数据测试是简单的 SQL 查询,它根据您设置的条件返回失败的记录。这些测试用于验证转换后数据的正确性,确保模型的结果符合预定义的标准。
Recurve 提供了一系列内置测试,您可以快速将其添加到模型中。
按照以下步骤向模型添加测试:
打开模型编辑器。
切换到“测试用例/ Test cases”选项卡。
点击 + 添加新建/ + Add new。
选择一个模板并指定相应的值。
例如,对于
stg_orders
模型,我们可以添加 "空值" 测试,以验证日期列中是否存在null
值。点击 添加/ Add。
新的测试将被添加到模型的测试用例列表中,并将在每次模型在控制台运行或作为管道的一部分运行时自动执行。
Last updated