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

本文介绍如何在Power Query中使用M语言计算两个日期时间之间的秒数,并生成相应时间列表,以创建每秒状态记录。通过Duration.TotalSeconds和List.Duration函数,详细展示了将日期时间差转换为秒数,然后生成包含所有秒数的列表,最后结合开始时间得到完整的时间序列。
摘要由CSDN通过智能技术生成

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

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

file

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

file

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

file

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

两个日期时间的差值(Duration)很容易获取&#

### 回答1: 首先,我们需要一个数据库表来存储课程信息,可以包含以下字段:课程名称、授课教师、开始时间、结束时间。 接下来,我们可以使用一个Python脚本来实现每10秒添加一个课程的功能,具体步骤如下: 1. 连接数据库,使用Python中的DB-API进行数据库操作。 2. 获取当前时间和当前时间后10分钟的时间。 3. 循环插入课程数据,每次插入一个课程,开始时间为当前时间,结束时间为当前时间加上10分钟。 4. 暂停10秒钟,然后进入下一次循环。 下面是一个简单的示例代码: ```python import time import datetime import random import sqlite3 # 连接数据库 conn = sqlite3.connect('test.db') c = conn.cursor() # 创建表 c.execute('''CREATE TABLE courses (name text, teacher text, start_time timestamp, end_time timestamp)''') # 获取当前时间和当前时间后10分钟的时间 now = datetime.datetime.now() end = now + datetime.timedelta(minutes=10) # 循环插入课程数据 while now < end: # 插入一条随机生成的课程数据 name = 'course{}'.format(random.randint(1, 100)) teacher = 'teacher{}'.format(random.randint(1, 10)) start_time = now.strftime('%Y-%m-%d %H:%M:%S') end_time = (now + datetime.timedelta(minutes=1)).strftime('%Y-%m-%d %H:%M:%S') c.execute("INSERT INTO courses VALUES (?, ?, ?, ?)", (name, teacher, start_time, end_time)) conn.commit() # 暂停10秒钟 time.sleep(10) # 更新当前时间 now = datetime.datetime.now() # 关闭数据库连接 conn.close() ``` 这个脚本会在当前时间和当前时间后10分钟之间,每隔10秒钟插入一条课程数据,课程名称和授课教师是随机生成的。你可以根据自己的需求修改代码。 ### 回答2: 要在数据库中实现在当前时间至当前时间后10分钟之间,每10秒钟添加一个课程的功能,可以通过以下步骤来实现。 1. 连接数据库:首先,需要使用编程语言或数据库管理工具连接到目标数据库。 2. 创建表:在数据库中创建一个包含课程数据的表。该表可以包含课程名称、课程开始时间和结束时间等字段。 3. 编写插入语句:使用SQL语句编写插入语句,以将课程数据添加到数据库表中。插入语句应包含课程的名称和开始时间,开始时间可以使用当前时间加上适当的间隔来计算。 4. 循环插入数据:使用编程语言中的循环结构,以每10秒钟的间隔执行上述的插入语句。可以使用定时器或延时函数来控制循环的间隔时间。 5. 检查数据:在插入数据的过程中,可以使用查询语句来验证数据是否正确地被插入了数据库表中。 6. 关闭数据库连接:在所有课程都被添加到数据库中后,记得关闭数据库连接,释放资源。 需要注意的是,上述步骤仅提供了一种实现方式,具体的实现方法可能因使用的编程语言、数据库系统和开发环境而有所不同。 ### 回答3: 在给定时间范围内,每10秒添加一个课程,可以通过编写一个数据库查询或脚本来实现。 首先,我们需要确定当前时间和当前时间后10分钟的时间范围。然后,循环执行添加课程的操作,并每隔10秒重复执行,直到达到时间范围截止。 具体步骤如下: 1. 获取当前时间并计算当前时间后10分钟的时间。可以使用系统函数获取当前时间,再通过相应函数计算当前时间后10分钟的时间。 2. 设定一个循环,使其在给定时间范围内循环执行。 3. 在循环内部,编写插入课程的SQL语句或调用相应的数据库插入函数,将课程信息插入到数据库中。 4. 设置每次循环之后的等待时间为10秒。 5. 在循环的终止条件中,判断当前时间是否已经超过了当前时间后10分钟的时间,如果是,则终止循环。 6. 执行完上述步骤后,数据库将会在当前时间至当前时间后10分钟之间,每隔10秒添加一个课程。 需要注意的是,具体的实现方式会根据所使用的数据库类型和编程语言的不同而有所差异。以上是一个大致的步骤,具体的实现可以根据实际需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值