美文网首页
M语言 | 生成给定时间范围内的每秒状态

M语言 | 生成给定时间范围内的每秒状态

作者: PowerPivot工坊 | 来源:发表于2019-12-12 10:37 被阅读0次

本期重点::

生成给定的两个日期时间之间的所有日期时间

两个M函数:Duration.TotalSeconds和List.Duration

小伙伴们好啊。

日常工作中我们经常要在Power Query里对不规范的数据进行清洗加工,再加载到模型中进行处理。一起来看一个场景,截图如下:

上图中的数据,对应了某机器(数据类型编号)在开始时间和结束时间内的机器状态。显然,这个数据不够规范,我们希望能够获得一张二维表记录该机器在开始时间和结束时间内的每一秒的机器状态。在Power Query中我们需要对数据怎样做处理呢。

为方便演示,我们选取其中一行数据:

最终要达到的效果图如下:

第一步:计算两个日期时间之间的秒数

两个日期时间的差值(Duration)很容易获取,用结束时间减去开始时间即可。问题在于如何把这个持续时间转换成秒数呢。在M语言中有大量的时间函数可直接调用,这里我们用的函数是Duration.TotalSecond,可直接用来计算两个日期时间相差的秒数:

第二步:生成一个从0秒开始到最后秒数的所有时间列表

这里我们采用List.Duration函数。简单描述一下该函数:一共有三个参数(start as dutation,count as number,step as duration)。一参给定一个持续时间(0秒),二参指定增量的次数(第一步中的秒数),三参给定每次的增量(1秒)。该代码执行后,将生成从0秒到11秒中的所有持续时间。

第三步:展开第二步中的List,用这个List中的每个持续时间和开始时间相加即可

最后删除不需要的列,修改下数据类型,就得到了最开始的效果图。这个过程相信大家都很熟悉,不做赘述。

当然,这里有更简单的方式。用List.Generate实现,可以省去很多中间步骤,但是该函数上手有难度,有余力的小伙伴可以先动手尝试。我们会在以后的文章中接着讨论。

今天的分享就到这里,祝大家学习愉快,下次见!

* PowerPivot工坊原创文章,转载请注明出处!


延伸阅读:

M函数的拆拆合合

用M语言创建日期表

通过#shared调取Power Query内置M函数解释

DAX+M语言应用场景:如何得到含有全国维度的图表?

Power Query中的VLOOKUP - 合并查询


如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。

相关文章

  • M语言 | 生成给定时间范围内的每秒状态

    本期重点::生成给定的两个日期时间之间的所有日期时间两个M函数:Duration.TotalSeconds和Lis...

  • 随机数的生成

    Math对象的random方法返回0到1之间的伪随机数,可能等于0,但一定小于1。 生成给定范围内的随机数,包括m...

  • python的random随机数库的用法

    random() 方法返回随机生成的一个实数,它在[0,1)范围内。 randint(m,n)方法返回一个在m和n...

  • R语言技巧每日分享day3-生成组合数combn()

    R语言中的combn()函数用于生成x中取m个元素的所有组合 用法: combn(x, m, FUN, simpl...

  • LeetCode 力扣 92. 反转链表 II

    题目描述(中等难度) 给定链表的一个范围,将这个范围内的链表倒置。 解法一 首先找到 m 的位置,记录两端的节点 ...

  • js骚操作

    1.生成随机ID 2.每秒更新当前时间 3.生成随机 16 进制 颜色 码 如 # ffffff 4.返回键盘 5...

  • C++生成随机数据方法

    生成随机int数组方法(数据未知) 生成随机Int序列(给定数据) 生成随机序列(给定数据)--模板函数

  • 2022-07-03

    世界存在于光锥的范围内 生命存在于记忆的范围内 宇宙的通用语言是时间 人类的通用语言是爱

  • 高效语言交流的基础

    ——分享《心理学与生活》中语言生成相关知识。 语言生成的研究既包括特定时间人们选择说什么,也包括为了生成语言人们所...

  • python生成毫秒级时间戳

    需求:需要大数据测试考勤时间,生成一些范围内的秒级时间戳 思路:使用faker.random_int方法生成13位...

网友评论

      本文标题:M语言 | 生成给定时间范围内的每秒状态

      本文链接:https://www.haomeiwen.com/subject/nnbzgctx.html