Power Query-Power BI-DHIS2:如何转置列并通过API实现目标格式?
如何通过DHIS2 API实现数据转置(将Data列转为横向列)
问题说明
需要将DHIS2 API返回数据中的Data列转置为横向列,与Organization、Period列并排展示。除了现有指定参数外,如何通过DHIS2 API配置获取符合预期的结果格式?
当前结果表
| 数据项(Data) | 组织(Organization) | 周期(Period) | 数值(Value) |
|---|---|---|---|
| text1 | name org1 | month | value1 |
| text2 | name org2 | month | value2 |
| .... | ..... | ..... | ..... |
期望结果表
| 组织(Organization) | 周期(Period) | text1 | text2 | text... |
|---|---|---|---|---|
| name org1 | month | value1 | value2 | ... |
| name org2 | month | value1 | value2 | ... |
现有Power Query代码(中文翻译版)
let 数据源 = Csv.Document(Web.Contents("https://ministere-sante.mg/api/29/analytics.csv?dimension=dx:toUMbcnAgGN;O1W97xlGqBZ;arxPOcQhanb;dn8pVWUHojB;FvLKwx96Kv0;q87CgC2m7fZ;NU6LJrW5OtP;rw8lpwb5j5G;oWA1W7mmuba;qHDVI4FRFjE;qtKuAZgaMU0;rm102gbKzBZ;ACiHvHoBVtZ;IeIcIkISFW4;naBJZSepUeV;Qi1WRFJoSnU;Swv8DdBhJvC;NnYKpAzraXX;T0kBIwfDa5N;o5kVh4kRFF9;JAX5HOu665U;QkW2vpJn1z5;lhQWQlxrzOv;wiw3Y0Zkjii;uyey4mCGZLz;GPnoGnyocHS;sx7TSP921al;s0mlmmPbCdq;f3fhveMBAt2;cmaAWx5VuEx;aGmAt9Ovc57;LVZ0zsPVm3f;gr4bKti3JEw;cMN7aHkXHhs;BFeLG7TNOvq;A9PF5ZTUGPN;tHivnx60q8q;wdPJGHpacCb;M5hPC2GC9N8;bMxzvvXKsGH;Ofuxl3WRHb0;QMSuZWQIf8a;QJ6ujwA2gko;jgNrV7s1AiP;MT5wClwhTPx;ALvAHqLDm9c;HnYt4ZXti24;QiNO2NlJJNc;SGZoMo3Hx4j;Qc94kxm2YJe;i6RTvjFSehw;PP68mDkB94t;sDQlOpLyZiR;u0Akq9GFioM;dzwW7D68fMo;wNTH1o9J9QV;xdxcfEcIPIP;QcyVv7YjiZs;vr8IFPHqD2w;HfQiHEQTJ0g;hmpaTGAqd0z;D7RcnVq5INU;QAfFgIPHa3s;eXYjyu0ey8I;QuufqC3FcDL;TwYb8CZJtCz;t1ErzIjc6Rq;veCj7xnZiZf&dimension=ou:qwzcYsSzL7k;LEVEL-5&dimension=pe:LAST_MONTH&displayProperty=NAME&outputIdScheme=NAME"),[Delimiter=",", Columns=4, Encoding=65001, QuoteStyle=QuoteStyle.None]), 提升表头 = Table.PromoteHeaders(数据源, [PromoteAllScalars=true]), 修改列类型 = Table.TransformColumnTypes(提升表头,{{"Data", type text}, {"Organisation unit", type text}, {"Period", type text}, {"Value", type text}}) in 修改列类型
DHIS2 API配置方案
1. 调整维度顺序
DHIS2 Analytics API的维度排列直接决定结果的分组逻辑:
- 将
ou(组织单元)和pe(周期)设为行维度,放在参数最前面 - 将
dx(数据元素,对应原Data列)设为列维度,放在行维度之后 - 修改后的维度参数格式:
dimension=ou:qwzcYsSzL7k;LEVEL-5&dimension=pe:LAST_MONTH&dimension=dx:toUMbcnAgGN;O1W97xlGqBZ;...
2. 添加outputLayout=COLUMN参数
在API请求末尾添加&outputLayout=COLUMN,强制将数据元素维度渲染为横向列,替代默认的纵向行展示。
3. 完整请求示例
调整后的API URL核心部分:
https://ministere-sante.mg/api/29/analytics.csv?dimension=ou:qwzcYsSzL7k;LEVEL-5&dimension=pe:LAST_MONTH&dimension=dx:toUMbcnAgGN;O1W97xlGqBZ;...&displayProperty=NAME&outputIdScheme=NAME&outputLayout=COLUMN
参数说明
outputLayout=COLUMN:指定数据元素维度作为列展示- 维度优先级:行维度在前,列维度在后,DHIS2会自动按行维度分组,将列维度展开为横向表头
内容的提问来源于stack exchange,提问作者Hyacinthe
相关产品推荐
相关产品推荐

