关于如何使用 Power BI 网抓后加时间戳并保存数据

Power Query 好人 ⋅ 于 2018-08-15 22:42:28 ⋅ 最后回复由 Alex 2018-08-15 22:44:13 ⋅ 2911 阅读

5月更新的网抓功能很厉害,比如我只监控10款竞品的价格,每次手动点一下刷新,能获取一次实时的价格,现在我长期开着一个Power BI desktop文件,点一下刷新就可以做之前30分钟要的工作了。
现在有个新的需求,有什么方案能把我每次刷新出来的数据加时间戳存储,每手动刷新一次,就存储一次,用于我今后对这些数据进行基于时间维度的分析呢?

本帖已被设为精华帖!
附言 0  ·  2018-08-15 22:42:36

如果不能实现加时间戳存储功能,仅把上次刷新数据保存,用于跟本次刷新数据对比保存也可以。

本帖由 Alex 于 5年前 加精
最佳答案
  • Alex MOD 社区清洁工
    2018-08-15 22:44:13

    不直接支持,但可以借助 JavaScript 来间接实现。
    使用前需要开启 ActiveX 控件,可参考 《在Power Query中使用VB/JavaScript》
    对文中的案例 2 修改自定义函数,以当前的时间戳作为生成的 csv 文件名。

    (tb as table,path as text)=>
    let
        Timestamp = Text.From(Number.IntegerDivide(Duration.TotalSeconds(DateTime.LocalNow()-#datetime(1970,1,1,8,0,0)),1)),
        Json = Text.FromBinary(Json.FromValue(Table.ToRows(Table.DemoteHeaders(tb)))),
        Export = Web.Page(
                        "<script>
                                var fso=new ActiveXObject('Scripting.FileSystemObject');
                                var f1=fso.CreateTextFile('"&Text.Replace(path&Timestamp&".csv","\","/")&"',true);
                                var arr="&Json&";
                                f1.WriteLine(arr.join('\n'));
                                f1.WriteBlankLines(1);
                                f1.Close(); 
                        </script>")
    in
        Export

    自定义函数需要两个参数,第一参数为表,可以是抓取的结果。第二参数为导出文件的目录,如 C:\
    这样每手动刷新一次,在设置的目录下就会生成一个文件,如 1530011447.csv

回复数量: 1
  • Alex MOD 社区清洁工
    2018-08-15 22:44:13

    不直接支持,但可以借助 JavaScript 来间接实现。
    使用前需要开启 ActiveX 控件,可参考 《在Power Query中使用VB/JavaScript》
    对文中的案例 2 修改自定义函数,以当前的时间戳作为生成的 csv 文件名。

    (tb as table,path as text)=>
    let
        Timestamp = Text.From(Number.IntegerDivide(Duration.TotalSeconds(DateTime.LocalNow()-#datetime(1970,1,1,8,0,0)),1)),
        Json = Text.FromBinary(Json.FromValue(Table.ToRows(Table.DemoteHeaders(tb)))),
        Export = Web.Page(
                        "<script>
                                var fso=new ActiveXObject('Scripting.FileSystemObject');
                                var f1=fso.CreateTextFile('"&Text.Replace(path&Timestamp&".csv","\","/")&"',true);
                                var arr="&Json&";
                                f1.WriteLine(arr.join('\n'));
                                f1.WriteBlankLines(1);
                                f1.Close(); 
                        </script>")
    in
        Export

    自定义函数需要两个参数,第一参数为表,可以是抓取的结果。第二参数为导出文件的目录,如 C:\
    这样每手动刷新一次,在设置的目录下就会生成一个文件,如 1530011447.csv

暂无评论~~
  • 请务必阅读并严格遵守《社区管理规范与使用说明》
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 发送表情,可用的 Emoji 见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板粘贴上传, 格式限制 - jpg, png, gif
  • 不支持上传附件,请尽可能用文字和图片将问题描述清楚,如实在需要上传附件,可上传到 共享网盘 后分享链接
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
Ctrl+Enter