如何在Power BI中将Dynamics CRM计划工时字符串拆分为表格新行?
在Power BI中解析JSON格式的计划工时列并拆分行
针对你遇到的Dynamics CRM数据源中JSON格式计划工时列的拆分需求,按以下步骤在Power BI的Power Query编辑器中操作即可实现:
进入Power Query编辑器
加载数据源后,点击顶部菜单栏的「转换数据」,进入Power Query编辑界面。解析JSON格式列
选中包含JSON字符串的「planned work」列,切换到「转换」选项卡,找到并点击「JSON」按钮。此时该列会从文本格式转换为列表类型,每个单元格里的JSON数组会变成包含多个记录的列表。将列表展开为单独行
点击解析后列标题右侧的双向箭头展开按钮,选择「到新行」选项。这一步会把每个列表中的单独记录拆分成独立行,自动适配单元格内条目数量不固定的情况。将记录展开为单独列
现在每行是一个包含Start、End、Hours字段的记录,再次点击列标题的展开按钮,勾选所有字段(Start、End、Hours)并确认,即可将记录中的字段拆分成独立的列。提取时间戳(处理/Date(xxx)/格式)
此时Start和End列的值是/Date(1660809600000)/这类格式,需要提取其中的时间戳数字:
- 选中Start列,切换到「转换」选项卡,点击「替换值」:
- 查找值填写
/Date(,替换为空; - 再次执行替换,查找值填写
)/,替换为空;
- 查找值填写
- 对End列重复上述操作,之后将这两列的类型转换为「整数」。
也可以用Power Query M函数快速提取,比如添加自定义列:
Start Timestamp = Text.BetweenDelimiters([Start], "/Date(", ")")
生成后将该列转成整数类型,再替换原Start列即可。
- 可选:转换时间戳为标准日期
如果需要把时间戳转成可读的日期格式,可以添加自定义列,使用以下公式:
#datetime(1970,1,1,0,0,0) + #duration(0,0,0,[Start Timestamp]/1000)
同理处理End列的时间戳。
完成以上步骤后,你就能得到符合需求的表格:
| Start Date | End Date | Hours |
|---|---|---|
| 1660809600000 | 1660838400000 | 8 |
| 1660892400000 | 1660924800000 | 9 |
| 1661151600000 | 1661184000000 | 9 |
内容的提问来源于stack exchange,提问作者AMD
相关产品推荐
相关产品推荐

