You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不使用Azure Analytics Services的情况下,通过Synapses Serverless SQL pool在Delta Lake构建维度模型?

在Synapse Serverless SQL Pool上基于Delta Lake构建维度模型(无需Azure Analytics Services)

前置条件

  • 已部署Azure Synapse Analytics工作区及Serverless SQL池
  • Delta Lake数据存储在Azure Data Lake Storage (ADLS) Gen2中,且Serverless SQL池拥有该存储的读取权限(可通过SAS密钥、托管身份或RBAC配置)
  • 已明确Delta Lake中事实表、维度表的源数据结构与分布

具体操作步骤

1. 验证Delta Lake访问连通性

先通过OPENROWSET测试Serverless SQL池能否正常读取Delta Lake数据:

SELECT TOP 10 *
FROM OPENROWSET(
    BULK 'https://<你的ADLS账户名>.dfs.core.windows.net/<容器名>/<Delta Lake数据路径>',
    FORMAT = 'DELTA'
) AS [result]

若返回数据则访问正常;若报错,检查存储路径或权限配置。

2. 创建外部数据源(可选但推荐)

为简化后续路径引用,创建指向ADLS Delta Lake根路径的外部数据源:

CREATE EXTERNAL DATA SOURCE DeltaLakeSource
WITH (
    LOCATION = 'https://<你的ADLS账户名>.dfs.core.windows.net/<容器名>/<Delta Lake基础路径>',
    TYPE = HADOOP
);

3. 构建维度表

维度表存储静态或缓慢变化的业务维度(如日期、客户、产品),以下是两种实现方式:

方式一:创建实时访问视图

适合需要实时获取最新维度数据的场景:

CREATE VIEW dim_date
AS
SELECT
    date_key,
    full_date,
    year,
    quarter,
    month,
    day_of_month,
    day_of_week
FROM OPENROWSET(
    BULK '<日期维度的Delta Lake路径>', -- 可使用相对外部数据源的路径,或完整ADLS路径
    DATA_SOURCE = 'DeltaLakeSource', -- 未创建外部数据源则省略此行,直接用完整BULK路径
    FORMAT = 'DELTA'
) AS date_source
WHERE is_current = 1 -- 针对缓慢变化维度(SCD2)过滤当前有效记录

方式二:创建物化视图(性能优化)

适合查询频率高、对性能要求高的场景,支持增量刷新:

CREATE MATERIALIZED VIEW dim_customer
WITH (DISTRIBUTION = ROUND_ROBIN)
AS
SELECT
    customer_key,
    customer_id,
    customer_name,
    email,
    address,
    current_flag,
    start_date,
    end_date
FROM OPENROWSET(
    BULK '<客户维度的Delta Lake路径>',
    DATA_SOURCE = 'DeltaLakeSource',
    FORMAT = 'DELTA'
) AS customer_source

手动刷新物化视图:

REFRESH MATERIALIZED VIEW dim_customer;

4. 构建事实表

事实表存储业务事件数据(如销售订单、交易记录),同样基于Delta Lake创建视图:

CREATE VIEW fact_sales
AS
SELECT
    sales_key,
    date_key,
    customer_key,
    product_key,
    quantity,
    unit_price,
    total_amount,
    sales_timestamp
FROM OPENROWSET(
    BULK '<销售事实的Delta Lake路径>',
    DATA_SOURCE = 'DeltaLakeSource',
    FORMAT = 'DELTA'
) AS sales_source

5. 构建星型/雪花型关联模型

通过视图关联事实表与维度表,形成可直接查询的维度模型:

CREATE VIEW sales_star_schema
AS
SELECT
    f.sales_key,
    f.total_amount,
    f.quantity,
    d.full_date,
    d.year,
    d.month,
    c.customer_name,
    c.email,
    p.product_name,
    p.category
FROM fact_sales f
JOIN dim_date d ON f.date_key = d.date_key
JOIN dim_customer c ON f.customer_key = c.customer_key
JOIN dim_product p ON f.product_key = p.product_key

6. 验证模型可用性

执行查询测试模型关联是否正常:

SELECT
    d.year,
    d.month,
    p.category,
    SUM(f.total_amount) AS total_sales
FROM sales_star_schema
GROUP BY d.year, d.month, p.category
ORDER BY d.year, d.month, total_sales DESC

关键注意事项

  • SCD处理:针对SCD2类型的维度数据,需通过current_flag或时间范围字段过滤当前有效版本
  • 性能优化:大体积Delta Lake表可通过分区列(如date_key)在OPENROWSET中指定PARTITION参数,减少数据扫描范围
  • 权限管控:确保Serverless SQL Pool的服务主体或用户拥有ADLS的Storage Blob Data Reader权限,避免访问被拒

内容的提问来源于stack exchange,提问作者Abhijit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 08:13:48