如何在Power Query的Odata.Feed查询中添加DateTimeZone.LocalNow参数以获取当日数据
如何在Power Query的Odata.Feed查询中添加DateTimeZone.LocalNow参数以获取当日数据
嗨,我来帮你搞定这个需求!要让Power Query的OData查询自动获取当日数据,咱们可以通过动态生成符合OData格式的日期字符串,再嵌入到查询URL里来实现,下面分两种场景给你详细说明:
场景一:自动获取当日凌晨至今的数据(最常用的当日数据需求)
如果需要获取当天从凌晨0点开始的所有数据,咱们可以先生成当日起始时间,再转换成OData要求的datetime'YYYY-MM-DDTHH:MM:SS'格式,最后拼到查询URL中。完整的查询代码如下:
let // 获取当日凌晨的时区日期时间(确保跨时区也能准确取到本地当天) TodayStartTime = DateTimeZone.From(DateTimeZone.Date(DateTimeZone.LocalNow())), // 转换成OData查询需要的字符串格式 FormattedDateFilter = Text.Format("datetime'yyyy-MM-ddTHH:mm:ss'", {TodayStartTime}), // 动态拼接OData查询URL ODataQueryUrl = Text.Format( "https://test.test?$filter=Test eq '1969' and WhseTaskConfWhseTmznDate ge #{0}&$select=Activity", {FormattedDateFilter} ), // 调用OData Feed获取数据 Source = OData.Feed(ODataQueryUrl, null, [Implementation="2.0"]) in Source
场景二:使用可手动调整的参数(灵活适配不同需求)
如果你希望以后能手动修改过滤的起始时间,也可以先创建一个自定义参数,再在查询里引用它:
- 打开Power Query编辑器,点击顶部「主页」选项卡的「管理参数」→「新建参数」
- 设置参数信息:
- 参数名称:比如
FilterStartDateTime - 类型:选择「日期/时间/时区」
- 当前值:默认可以设为
DateTimeZone.From(DateTimeZone.Date(DateTimeZone.LocalNow()))(当日凌晨),或者直接用DateTimeZone.LocalNow()(当前时间)
- 参数名称:比如
- 然后用下面的代码引用这个参数:
let // 引用自定义参数 SelectedStartDateTime = FilterStartDateTime, // 转换成OData格式字符串 FormattedFilter = Text.Format("datetime'yyyy-MM-ddTHH:mm:ss'", {SelectedStartDateTime}), // 拼接查询URL DynamicODataUrl = Text.Format( "https://test.test?$filter=Test eq '1969' and WhseTaskConfWhseTmznDate ge #{0}&$select=Activity", {FormattedFilter} ), Source = OData.Feed(DynamicODataUrl, null, [Implementation="2.0"]) in Source
这样每次刷新查询时,都会自动使用最新的参数值过滤数据,需要调整起始时间时,直接修改参数即可,非常方便~
备注:内容来源于stack exchange,提问作者Yorgenys Borges
相关产品推荐
相关产品推荐

