5月更新的网抓功能很厉害,比如我只监控10款竞品的价格,每次手动点一下刷新,能获取一次实时的价格,现在我长期开着一个Power BI desktop文件,点一下刷新就可以做之前30分钟要的工作了。
现在有个新的需求,有什么方案能把我每次刷新出来的数据加时间戳存储,每手动刷新一次,就存储一次,用于我今后对这些数据进行基于时间维度的分析呢?
本帖已被设为精华帖!
5月更新的网抓功能很厉害,比如我只监控10款竞品的价格,每次手动点一下刷新,能获取一次实时的价格,现在我长期开着一个Power BI desktop文件,点一下刷新就可以做之前30分钟要的工作了。
现在有个新的需求,有什么方案能把我每次刷新出来的数据加时间戳存储,每手动刷新一次,就存储一次,用于我今后对这些数据进行基于时间维度的分析呢?
如果不能实现加时间戳存储功能,仅把上次刷新数据保存,用于跟本次刷新数据对比保存也可以。
不直接支持,但可以借助 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
。
不直接支持,但可以借助 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
。