我正在Databricks-GCP中处理一个用例,在那里我试图找出Databricks中架构/数据库中的delta表,这些表在过去1天内更新。我使用了DESCRIBE DETAIL <tableName>
,并对所有表名循环运行了此命令,并对"lastModified"列进行了检查,但这需要花费大量时间。
有没有办法一次得到所有表的lastModified时间。
我不认为有本机方法可以做到这一点,但如果你知道所有表的路径,你可以使用一个小技巧:检查表的_delta_log
文件夹中的_last_checkpoint
文件。如果你得到了这个文件的时间(例如,使用Python函数os.path.getmtime
,不要忘记在使用它的路径的开头添加/dbfs
(,你基本上会得到最后修改的日期。
这样做可能会快得多,如果需要,你甚至可以并行化工作,但缺点是你需要有所有表的路径(或者至少可以通过浏览文件夹找到它,带有_delta_log
的文件夹是一个delta表,所以你应该能够扫描磁盘(。
编辑(以防以后有人看不到评论(:
正如您所说,_last_checkpoint
文件应该每10次提交才修改一次,所以这并不好。作为一种变通方法,您可以查看_delta_log
中所有文件的日期,并进行最后一次修改(这里的示例(,这应该可以工作,我怀疑它仍然比desc detail
快得多。