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

如何用Azure DF/Synapse/SQL无分组将列数据转置为3列月份映射行格式

列式存储月份数据转置为行结构实现方案

需求核心:不做数据分组,将源CSV中重复排列的月份列转为行存储,固定维度字段保留,拆分后每行对应1个月份的全量度量值。

前置映射规则确认

源CSV中13个固定维度列(从Supercategory到Item Description)直接保留输出;后续连续排列的Jan 2022/Feb 2022列按从左到右顺序,依次对应输出的业务度量字段,COUNTRY/LOCAL_CURRENCY/EXCHANGE_RATE/YEAR/MONTH/MONTH_YEAR为衍生/固定赋值字段,不从源月份列提取。

方案1:Synapse SQL 实现(无聚合分组,性能最优)

先将源CSV导入Synapse临时表stg_sales_raw,导入时重名月份列会自动加数字后缀(如Jan 2022_1、Feb 2022_1,后缀序号和度量顺序一一对应),确认列和度量的映射关系后,执行以下查询即可:

SELECT
    -- 以下固定值可根据业务实际替换,也可关联维度表动态获取
    'US' AS COUNTRY,
    'USD' AS LOCAL_CURRENCY,
    m.YEAR,
    m.MONTH,
    m.MONTH_YEAR,
    -- 直接保留所有固定维度列
    r.Supercategory,
    r.Segment,
    r.Subsegment,
    r.Class,
    r.[Total Property (Brand + License)],
    r.[Corporate Manufacturer],
    r.Manufacturer,
    r.Brand,
    r.License,
    r.Licensors,
    r.[Model Number],
    r.[Item Description],
    -- 拆分后的度量字段
    m.UNITS,
    m.AMOUNT_LC,
    m.AMOUNT_USD,
    m.[% Distribution - Weighted],
    m.[% of Stores Selling - Unweighted],
    m.[$ Velocity - Weighted],
    m.[Unit Velocity - Weighted],
    -- 汇率可关联汇率表按月份动态获取
    1 AS EXCHANGE_RATE
FROM stg_sales_raw r
-- 逐行拆分为对应月份的行,全程无GROUP BY聚合操作
CROSS APPLY (
    VALUES
    -- 1月数据,按度量顺序取对应Jan列,有多少个度量就加多少个字段
    (2022, 1, 'Jan 2022', r.[Jan 2022_1], r.[Jan 2022_2], r.[Jan 2022_3], r.[Jan 2022_4], r.[Jan 2022_5], r.[Jan 2022_6], r.[Jan 2022_7]),
    -- 2月数据,按度量顺序取对应Feb列
    (2022, 2, 'Feb 2022', r.[Feb 2022_1], r.[Feb 2022_2], r.[Feb 2022_3], r.[Feb 2022_4], r.[Feb 2022_5], r.[Feb 2022_6], r.[Feb 2022_7])
) m(
    YEAR, MONTH, MONTH_YEAR,
    UNITS, AMOUNT_LC, AMOUNT_USD,
    [% Distribution - Weighted], [% of Stores Selling - Unweighted],
    [$ Velocity - Weighted], [Unit Velocity - Weighted]
)

方案2:Azure DF / Synapse Pipeline 低代码实现

全程不需要聚合分组操作,步骤如下:

  • 配置CSV源数据集,开启「自动推断列名」,注意关闭「自动排序列」选项,保证源文件列顺序不被打乱,重名月份列会自动加数字后缀区分。
  • 添加「派生列」转换,补全固定字段COUNTRY、LOCAL_CURRENCY、EXCHANGE_RATE,直接赋值业务固定值即可。
  • 复制两个数据流支流做独立字段映射:
    • 支流1(1月数据):选取所有固定维度列、固定值列,选取所有后缀为_1到_7的Jan 2022列,分别重命名为对应度量名,同时派生列YEAR=2022、MONTH=1、MONTH_YEAR='Jan 2022'
    • 支流2(2月数据):选取所有固定维度列、固定值列,选取所有后缀为_1到_7的Feb 2022列,分别重命名为对应度量名,同时派生列YEAR=2022、MONTH=2、MONTH_YEAR='Feb 2022'
  • 添加「联合(Union)」转换,将两个支流按字段名对齐合并,即可得到最终的行结构输出。
  • 配置输出数据集,映射字段到目标存储即可。

注意事项:源文件的重复月份列没有独立列名,完全靠顺序对应度量,导入环节必须确认列顺序未被修改,否则会出现度量值错位的问题。

源数据与输出样例对照如下:
源数据与输出样例对照

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:14:50