我们有一个文件在datalake中分区,并使用Azure Synapse SQL Serverless池在Power BI中可视化之前使用外部表查询它们。
文件以以下分区格式存储:{source}/{year}/{month}/{filename}_{date}.parquet
然后,我们有一个外部表,用于加载该源的所有文件。
对于每天递增的所有文件,这非常有效,因为我们希望包括所有文件。但是,我们有一些集成,我们希望只返回最新的文件。(即,发送给我们的最新文件是我们希望加载到Power BI中的当前状态)。
是否可以在外部表语句中只返回最新的文件?或者我们需要增加额外的逻辑?我们可以加载中的所有文件,然后筛选最新的文件名并将其保存到新的位置。或者,我们可以尝试创建一个每天都会更改的外部表。
有没有更好的方法来解决这个问题?
2条答案
按热度按时间fsi0uk1n1#
如果您使用的是专用池,那么我会使用最新文件文件夹更改表的位置。
每天加载到一个新文件夹中,然后更改外部表的LOCATION以查看当前/最近一天,但您可能需要添加额外的逻辑来跟踪控制表中的最新成功加载日期。
不幸的是,我自己还没有找到更好的方法来做到这一点。
lfapxunr2#
您可以使用文件元数据来查询最新的文件,但需要确保Parquet地板文件以日期戳开始:
查看https://learn.microsoft.com/en-us/azure/synapse-analytics/sql/query-specific-files,了解有关在SQL Serverless查询中使用文件元数据的更多信息。