[Power Query] 日期和时间处理

Power Query查询编辑器为日期和时间数据提供了强大而快捷的处理方式

例1: 从日期中提取年、月份、日、季度、周、天等信息

数据源

步骤1:将数据源导入到Power BI Desktop,单击【转换数据】选项,进入Power Query查询编辑器界面

步骤2:选中"日期"列,选择【转换】|【日期】选项中的年、月份、季度、周、天进行日期转换

提取"日期"列中的年

选择【转换】|【日期】|【年】|【年】选项

提取"日期"列中的月份

选择【转换】|【日期】|【月份】|【月份】选项

提取"日期"列中的季度

选择【转换】|【日期】|【季度】|【一年的某一季度】选项

提取"日期"列中的周

选择【转换】|【日期】|【周】|【一年的某一周】选项

提取"日期"列中的天

选择【转换】|【日期】|【天】|【天】选项

例2: 从时间中提取小时、分钟和秒等信息

数据源

步骤1:将数据源导入到Power BI Desktop,单击【转换数据】选项,进入Power Query查询编辑器界面

步骤2:选中"时间"列,选择【转换】|【时间】选项中的小时、分钟、秒进行时间转换 

提取"时间"列中的小时

提取"时间"列中的分钟

提取"时间"列中的秒

提示Tips

字段设置"日期"或者"时间"值格式才能进行日期/时间处理

### Power Query 中处理日期间隔的函数 在 Power Query 中,处理日期间隔主要依赖于 `Date` `Duration` 类型的相关函数。这些函数可以方便地执行诸如计算两个日期之间的差异、增加或减少特定时间单位的操作。 #### 基本日期操作函数 - **Date.AddDays**: 向给定日期添加指定天数。 ```m Date.AddDays(#date(2023, 10, 5), 7) ``` - **Date.AddMonths**: 向给定日期添加指定月份数量。 ```m Date.AddMonths(#date(2023, 10, 5), 1) ``` - **Date.AddYears**: 向给定日期添加指定年份数量。 ```m Date.AddYears(#date(2023, 10, 5), 1) ``` 以上三个函数分别用于向现有日期上加减日、月、年的数值[^1]。 #### 计算日期差值 为了获取两个日期间的差距,通常会使用 `DateTimeZone.Difference` 或者更简单的 `Duration` 函数来表示两者之间的时间跨度: - **DateTimeZone.Difference** 此函数返回的是一个持续时间对象(duration),它代表了两个日期/时间戳记之间的区别。 ```m DateTimeZone.Difference(DateTime.LocalNow(), #datetimezone(2023, 9, 1, 0, 0)) ``` - **Duration.TotalDays**, **Duration.TotalHours**, etc. 这些辅助函数可以从 Duration 对象中提取具体的总秒数、分钟数、小时数或是整天的数量。 ```m let diff = DateTimeZone.UtcNow() - #datetimezone(2023, 8, 1, 0, 0), daysDiff = Duration.TotalDays(diff) in daysDiff ``` 上述例子展示了如何通过创建 duration 来衡量当前 UTC 时间与过去某个固定时刻的距离,并转换成总的天数形式显示出来。 #### 实际应用场景案例 假设有一个销售数据表,其中包含订单日期 (`OrderDate`) 及发货日期 (`ShipDate`) 字段,现在想要新增一列表示每笔交易从下单到发货所需的工作日数目,则可以通过如下方式实现: ```m let Source = ..., AddWorkingDaysColumn = Table.AddColumn(Source, "Shipping Working Days", each List.Sum( List.Transform( {Number.From([ShipDate])..Number.From([OrderDate])}, each if Number.Mod(_,7)<5 then 1 else 0 ) ), Int64.Type ) in AddWorkingDaysColumn ``` 这段代码片段利用了 M 语言中的循环结构以及逻辑判断语句实现了工作日计数的功能,在实际业务场景下非常实用[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值