amazon_orders 表加载到数据湖仓 Catalog。wedata_demo_db.amazon_orders(14 个字段,约 20 行示例数据,见 步骤 1 的数据准备说明)。DataLakeCatalog),且当前账号具备目标 Schema wedata_demo_db 的建表与读写权限。wedata_demo_db.amazon_orders 仅作演示用途。您可以使用任意结构化数据源替换;同步与 PySpark 步骤同样适用。amazon_orders 表字段示意:字段 | 类型 | 说明 |
order_id | VARCHAR(20) | 订单号 |
user_id | VARCHAR(20) | 用户 ID |
product_id | VARCHAR(20) | 商品 ID |
product_name | VARCHAR(200) | 商品名 |
category | VARCHAR(50) | 商品品类 |
unit_price | DECIMAL(10,2) | 单价 |
quantity | INT | 数量 |
total_amount | DECIMAL(12,2) | 订单金额 |
order_status | VARCHAR(20) | 订单状态:Delivered / Shipped / Cancelled 等 |
payment_method | VARCHAR(30) | 支付方式 |
order_date | VARCHAR(10) | 下单日期( dd/MM/yyyy) |
state_code | VARCHAR(5) | 州简码 |
state | VARCHAR(50) | 州名 |
city | VARCHAR(100) | 城市 |
quickstart_mysql,用于在后续任务中引用。jdbc:mysql://<host>:3306/wedata_demo_db。DataLakeCatalog)在工作空间绑定作业集群后由平台自动生成,无需手动新建。若没有该 Catalog,请联系工作空间管理员确认作业集群绑定情况。详见 添加数据源连接 。amazon_orders 表全量加载到数据湖仓 Catalog 中。quickstart_mysql2dlc(建议加上自己的姓名前缀以避免多人冲突)。quickstart_mysql。wedata_demo_db。amazon_orders。DataLakeCatalog。wedata_demo_db(如不存在请提前创建或联系管理员)。quickstart_amazon_orders。如目标表不存在,单击 创建目标表 ,平台会基于来源端 Schema 生成建表 SQL,必要时手动调整后提交。quickstart_transform.ipynb。-- 在 Notebook 中新建 SQL 单元格(单元格左上角语言选择 SQL),先执行以下建表语句-- 1. 创建 Schema(如果不存在)CREATE SCHEMA IF NOT EXISTS `DataLakeCatalog`.`wedata_demo_db`;-- 2. 创建表(如果不存在)CREATE TABLE IF NOT EXISTS `DataLakeCatalog`.`wedata_demo_db`.`quickstart_amazon_orders` (`order_id` STRING COMMENT '订单号',`user_id` STRING COMMENT '用户ID',`product_id` STRING COMMENT '商品ID',`product_name` STRING COMMENT '商品名',`category` STRING COMMENT '商品品类',`unit_price` DECIMAL(10,2) COMMENT '单价',`quantity` INT COMMENT '数量',`total_amount` DECIMAL(12,2) COMMENT '订单金额',`order_status` STRING COMMENT '订单状态',`payment_method` STRING COMMENT '支付方式',`order_date` STRING COMMENT '下单日期',`state_code` STRING COMMENT '州简码',`state` STRING COMMENT '州名',`city` STRING COMMENT '城市') COMMENT '样例订单表';
-- 3. 插入样例数据INSERT INTO `DataLakeCatalog`.`wedata_demo_db`.`quickstart_amazon_orders`(`order_id`, `user_id`, `product_id`, `product_name`, `category`, `unit_price`, `quantity`, `total_amount`, `order_status`, `payment_method`, `order_date`, `state_code`, `state`, `city`)VALUES('ORD-001','U001','P001','Towel Set','Home',CAST(15.99 AS DECIMAL(10,2)),2,CAST(31.98 AS DECIMAL(12,2)),'Delivered','CreditCard','01/03/2024','CA','California','Los Angeles'),('ORD-002','U002','P002','Bedsheet','Home',CAST(25.50 AS DECIMAL(10,2)),1,CAST(25.50 AS DECIMAL(12,2)),'Shipped','PayPal','02/03/2024','NY','New York','New York City'),('ORD-003','U003','P003','Curtain','Home',CAST(40.00 AS DECIMAL(10,2)),3,CAST(120.00 AS DECIMAL(12,2)),'Delivered','CreditCard','03/03/2024','TX','Texas','Houston'),('ORD-004','U004','P004','Carpet','Home',CAST(120.50 AS DECIMAL(10,2)),1,CAST(120.50 AS DECIMAL(12,2)),'Cancelled','ApplePay','04/03/2024','FL','Florida','Miami'),('ORD-005','U005','P005','Pillow','Home',CAST(12.99 AS DECIMAL(10,2)),4,CAST(51.96 AS DECIMAL(12,2)),'Delivered','CreditCard','05/03/2024','WA','Washington','Seattle'),('ORD-006','U006','P006','Mattress','Home',CAST(299.99 AS DECIMAL(10,2)),1,CAST(299.99 AS DECIMAL(12,2)),'Delivered','DebitCard','06/03/2024','IL','Illinois','Chicago'),('ORD-007','U007','P007','Blanket','Home',CAST(35.00 AS DECIMAL(10,2)),2,CAST(70.00 AS DECIMAL(12,2)),'Shipped','CreditCard','07/03/2024','AZ','Arizona','Phoenix'),('ORD-008','U001','P001','Towel Set','Home',CAST(15.99 AS DECIMAL(10,2)),5,CAST(79.95 AS DECIMAL(12,2)),'Delivered','CreditCard','08/03/2024','CA','California','San Diego'),('ORD-009','U008','P008','Rug','Home',CAST(65.00 AS DECIMAL(10,2)),1,CAST(65.00 AS DECIMAL(12,2)),'Delivered','PayPal','09/03/2024','NV','Nevada','Las Vegas'),('ORD-010','U009','P009','Comforter','Home',CAST(85.00 AS DECIMAL(10,2)),1,CAST(85.00 AS DECIMAL(12,2)),'Shipped','CreditCard','10/03/2024','OR','Oregon','Portland');
-- 4. 验证数据已插入SELECT * FROM `DataLakeCatalog`.`wedata_demo_db`.`quickstart_amazon_orders`;
df_orders = spark.sql("""SELECT *FROM `DataLakeCatalog`.`wedata_demo_db`.`quickstart_amazon_orders`""")display(df_orders)print(f"总行数: {df_orders.count()}")
Catalog.Schema.Table 进行引用。from pyspark.sql import functions as F# 过滤已取消订单df_valid = df_orders.filter(F.col("order_status") != "Cancelled")# 把 dd/MM/yyyy 文本日期解析为 date,并衍生年月df_valid = (df_valid.withColumn("order_date_parsed", F.to_date("order_date", "dd/MM/yyyy")).withColumn("order_year", F.year("order_date_parsed")).withColumn("order_month", F.month("order_date_parsed")))display(df_valid.select("order_id", "order_date", "order_date_parsed", "order_year", "order_month"))
df_state_revenue = (df_valid.groupBy("state", "state_code").agg(F.count("order_id").alias("order_count"),F.sum("total_amount").alias("total_revenue"),F.avg("total_amount").alias("avg_order_value"),F.countDistinct("user_id").alias("unique_customers"),).orderBy(F.desc("total_revenue")))display(df_state_revenue)
spark.sql("""CREATE TABLE IF NOT EXISTS `DataLakeCatalog`.`wedata_demo_db`.`quickstart_state_revenue` (state STRING COMMENT '州名',state_code STRING COMMENT '州简码',order_count BIGINT COMMENT '订单数',total_revenue DOUBLE COMMENT '总收入',avg_order_value DOUBLE COMMENT '客单价',unique_customers BIGINT COMMENT '去重用户数') COMMENT '按州维度的收入汇总'""")(df_state_revenue.select("state", "state_code", "order_count", "total_revenue", "avg_order_value", "unique_customers").write.mode("overwrite").insertInto("`DataLakeCatalog`.`wedata_demo_db`.`quickstart_state_revenue`"))display(spark.sql("SELECT * FROM `DataLakeCatalog`.`wedata_demo_db`.`quickstart_state_revenue`"))
sync_mysql2dlc。quickstart_mysql2dlc。pyspark_transform。quickstart_transform.ipynb。sync_mysql2dlc 节点的下侧锚点,按住左键拖动到 pyspark_transform 节点的上侧锚点,松开后生成一条依赖箭头。sync_mysql2dlc ───────▶ pyspark_transform(离线数据接入) (Notebook)
pyspark_transform 节点,确认右侧 上游依赖任务 中已列出 sync_mysql2dlc,运行条件 保持默认的 全部成功 。sync_mysql2dlc 先运行,成功后 pyspark_transform 自动开始。(UTC+08:00) Beijing, Chongqing, Hong Kong SAR, Urumqi)。2099-12-31。00:00。quickstart_orders_etl,可看到本工作流的所有运行实例及状态趋势图。视图 | 适用场景 |
图模式(DAG) | 直观查看每个任务状态,节点颜色:绿色=成功 / 红色=失败 / 蓝色=运行中 / 灰色=等待中 / 黄色=失败重试。 |
列表模式 | 表格化展示所有任务的运行 ID、类型、时长、计算资源、源文件路径。 |
甘特图 | 按时间轴展示每个任务的开始-结束区间,便于发现长尾任务与瓶颈。 |
DataLakeCatalog.wedata_demo_db.quickstart_amazon_ordersDataLakeCatalog.wedata_demo_db.quickstart_state_revenuequickstart_mysql(如已无其他任务引用)。quickstart_mysql2dlc 已成功执行,目标表 DataLakeCatalog.wedata_demo_db.quickstart_amazon_orders 中有数据,行数与 MySQL 源一致。quickstart_transform.ipynb 在 Studio 中已 保存版本 ,单元格可独立运行成功。DataLakeCatalog.wedata_demo_db.quickstart_state_revenue 中按州维度展示了订单数、总收入、客单价、去重用户数等指标。quickstart_orders_etl 在工作流列表中可见,调度状态为 启动 ,DAG 中两个任务均显示为成功。文档反馈