如何为数据添加时间戳以实现逐日对比分析
解决方案
一、Python脚本实现方案
完全可以通过Python实现带时间戳的CSV生成,流程简单易维护,结合你的VBA经验上手很快:
核心逻辑
定时抓取静态库存数据,为每条数据追加当前时间戳,追加写入CSV文件(避免覆盖历史数据,保证时间序列完整)
示例代码
import datetime import csv # ---------------------- # 替换为你的实际数据获取逻辑 # 比如用pandas读取Excel/数据库:import pandas as pd; df = pd.read_excel("data.xlsx"); data = df.to_dict("records") # ---------------------- def get_static_inventory_data(): # 模拟静态库存数据,实际替换成你的数据源读取代码 return [ {"商品ID": "SKU001", "库存数量": 120}, {"商品ID": "SKU002", "库存数量": 85}, {"商品ID": "SKU003", "库存数量": 30} ] def save_to_history_csv(data, filename="inventory_history.csv"): # 生成当前时间戳(格式:YYYY-MM-DD HH:MM:SS) current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") # 给每条数据添加时间戳字段 for item in data: item["快照时间"] = current_time # 追加写入CSV(自动处理表头:文件为空时写入,否则跳过) with open(filename, mode='a', newline='', encoding='utf-8') as f: fieldnames = ["商品ID", "库存数量", "快照时间"] writer = csv.DictWriter(f, fieldnames=fieldnames) # 判断是否需要写入表头 f.seek(0, 2) if f.tell() == 0: writer.writeheader() writer.writerows(data) # 执行脚本 if __name__ == "__main__": inventory_data = get_static_inventory_data() save_to_history_csv(inventory_data)
Power BI导入与自动化
- 在Power BI中选择「获取数据」→「CSV」,选中生成的
inventory_history.csv - 若要定时自动运行脚本:用Windows任务计划程序创建定时任务,指定执行该Python脚本(类似VBA的定时触发逻辑)
- 每次脚本运行后,刷新Power BI即可获取最新的时间序列数据,用于分析库存时长趋势
二、无代码实现方案
如果不想写代码,以下两种方案可以满足需求:
1. Power BI增量刷新+定时刷新
- 连接你的静态数据源(Excel/数据库)到Power BI
- 进入「数据加载」设置,开启增量刷新,设置按时间切片规则;同时添加自定义列
快照时间,用Now()函数生成当前时间 - 若发布到Power BI服务,设置云端定时刷新;若本地使用,配合Windows任务计划程序定时打开Power BI文件执行刷新
- 每次刷新会自动保留历史快照数据,无需手动导出
2. Excel Power Query + 定时刷新
- 在Excel中用Power Query连接静态数据源
- 添加自定义列,使用
DateTime.LocalNow()生成时间戳 - 将查询结果加载到Excel表格,开启Excel「数据」选项卡的「全部刷新」,并通过Windows任务计划程序定时打开Excel执行刷新
- 最后在Power BI中直接连接该Excel文件,即可获取完整的时间序列数据
内容的提问来源于stack exchange,提问作者B.Ross
相关产品推荐
相关产品推荐

