求助: 针对文件夹的增量更新
大佬们,下午好!
关注到最近集算器更新了外部库 CDC,Change Data Capture,针对某些数据库的变更数据捕获,这个功能非常好👍 👍 ,当然我对数据的使用还没到这个层次级别,数据库 CDC 暂时用不上。让我联想到的是有没有针对本地文件夹中的文件实施的增量更新功能或者实现方法?
比如,合并文件夹中的文件到一个汇总文件,每个期间(每周,每月或者每一段时间)都会有文件进来,每一个期末都要根据汇总表做一些统计分析,出一些报表,这是常规常见的操作。汇总不是问题,问题是每一次做汇总时都是对文件夹中所有文件的全量更新,文件数量少的时候全量解析也不是问题,但随着文件的增多,效率会越来越低。而目前常见的实现手段 VBA 或者 Power Query 或者是 Pandas 似乎都没有对本地文件夹的增量更新策略,微软的 PowerQuery 肯定没有,每一次都是全量刷新,但其 PBID Pro 付费版有针对数据模型的增量更新,不适用我所描述的场景。
我琢磨了一下,用 spl 粗略写了一个只处理文件夹中新增文件的脚本,大概意思是这样的,文件夹中会有一个 txt 文件用于记录处理过的文件,有一个集文件用于汇总,然后每一次执行时,用 directory 获取的所有文件跟 txt 文件做差集,差集不为空时说明有新增的文件,处理这部分文件后追加到集文件中即可,如下:
这样子写感觉很空洞,还是会有很多问题出现。
论坛中有存储相关的文章,但都是从数据库取数,取数时会有日期时间相关的字段进行筛选,跟此处描述的文件夹增量更新还是有所不同,所以恳请大佬们得闲时看看,有没有较为妥善的增量更新实现方法,或者干脆能不能实现针对本地文件夹的增量更新功能😄
谢谢!🙏 🙏
数据库有日志,可以分析出改动。
文件系统没有自动日志信息,要比出差异,得自己记个状态,考虑到所有情况就会很复杂了,所以会有专业的文件同步软件。
简单粗略的情况(比如假定同名文件就是一样的),就你这样自己写写也可以了(其实也是自己记了个状态表)。
想在基层函数层面实现,相当于要把这些专业的文件同步软件的 API 公开化,成本很高,也没多大用处了。如果有某种用得很广的文件同步软件提供了对外的 API,那简单封装一下还行。
事实上,SPL 里对付数据库的这一套,也是封装第三方的,那些日志分析一样非常复杂且专业。
感谢老贼回复🙏
增量更新关注好长时间了,微软的 PBID 付费版针对数据模型的增量更新也是去年还是什么时候出来的,时间并不长。
当看到 SPL 发布的 CDC,第一感觉这肯定是个好东西,果不其然 Debesium 数据变更捕获。
而捕获文件夹中的文件更新市面上似乎是没有的,我也是看到了 CDC 后想了好几天,才犹豫着发帖求助一下,万一求着了呢😄
合并文件夹是老表的常规需求,简单一点的用 Power Query,UI 界面操作,但效率不行,全量刷新,根本刷不完。而 VBA 也一样没有啥方法解决。
相比较而言,用 SPL 更方便高效,粗略写一下也能满足自己的需求,至少有那么点意思了。😄