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

能否用ECL语言转置数据集?两类转置场景求示例代码

问题一:数据集转置(行指标转列指标)

需求说明

输入数据集以指标为行,列对应不同日期的数值;需转置为日期为行,列对应不同指标的数值结构。

ECL实现代码

// 定义输入记录结构(匹配示例输入的字段逻辑)
InputRec := RECORD
  STRING Metric;
  INTEGER '202301';
  INTEGER '202302';
  INTEGER '202303';
END;

// 模拟示例输入数据集
InputData := DATASET([
  {'MetricA', 10, 20, 30},
  {'MetricB', 40, 50, 60},
  {'MetricC', 70, 80, 90}
], InputRec);

// 第一步:将日期列拆分为日期-值对(UNPIVOT)
Unpivoted := UNPIVOT(InputData, 
                     Date := COLUMNNAME, 
                     Value := COLUMNVALUE, 
                     '202301', '202302', '202303');

// 第二步:将指标转置为列(PIVOT)
Transposed := PIVOT(Unpivoted, 
                    Date, 
                    Metric AS ColumnName, 
                    Value AS ColumnValue, 
                    {'MetricA', 'MetricB', 'MetricC'});

// 输出转置结果
OUTPUT(Transposed, NAMED('Transposed_Result'));
问题二:转置后数据集转换为长格式

需求说明

输入为问题一的转置结果(日期为行,指标为列),需转换为每行包含日期、指标名称、对应数值的长格式结构。

ECL实现代码

基础硬编码版本

// 定义转置后的输入记录结构
TransposedRec := RECORD
  STRING Date;
  INTEGER MetricA;
  INTEGER MetricB;
  INTEGER MetricC;
END;

// 模拟问题一的输出数据集
TransposedData := DATASET([
  {'202301', 10, 40, 70},
  {'202302', 20, 50, 80},
  {'202303', 30, 60, 90}
], TransposedRec);

// 转换为长格式(UNPIVOT)
LongFormat := UNPIVOT(TransposedData, 
                      Metric := COLUMNNAME, 
                      Value := COLUMNVALUE, 
                      MetricA, MetricB, MetricC);

// 输出结果
OUTPUT(LongFormat, NAMED('Long_Format_Result'));

动态读取字段名版本(无需硬编码)

利用ECL元数据函数DATASETMETADATA动态获取字段列表,避免硬编码指标列:

// 获取转置后数据集的指标字段列表(排除第一个Date字段)
MetricFields := DATASETMETADATA(TransposedData).Columns[2..];

// 动态生成转换逻辑
DynamicLongFormat := UNPIVOT(TransposedData, 
                            Metric := COLUMNNAME, 
                            Value := COLUMNVALUE, 
                            MetricFields);

OUTPUT(DynamicLongFormat, NAMED('Dynamic_Long_Format'));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 08:43:19