我有一个datalake,可以在源系统更新时发送数据。这可能导致多个版本的单个项目被多次发送。
在USQL中,我可以检索所有内容,然后对数据集进行分区并获取每个项目的最新版本。
但是,它看起来不像视图中的变量?我希望其他团队能够轻松访问。 e.g。
CREATE VIEW MyDatabase.DataLakeViews.LastestDataVersion
AS
@output =
EXTRACT MyKey string,
MyData string,
EventEnqueuedUtcTime DateTime
FROM @"adl://bwdatalakestore.azuredatalakestore.net/Stream/MGS/pts/sportsbook/betinfo/csv/2017/11/27/{*}.csv"
USING Extractors.Text(delimiter : '|', skipFirstNRows : 1);
@PartitionedOutput =
SELECT *,
ROW_NUMBER() OVER(PARTITION BY MyKey ORDER BY EventEnqueuedUtcTime DESC) AS RowNumber
FROM @output;
@FinalOutput =
SELECT *
FROM @PartitionedOutput
WHERE RowNumber == 1;
OUTPUT @FinalOutput
TO "/ReferenceGuide/QSE/Extract/SearchLog_extracted.txt"
USING Outputters.Tsv();
这在视图中不起作用。有没有办法简化这种分区,而不是放入每个查询。
可能是通过自定义提取器实现此目的的一种方法吗?似乎它通过循环遍历每一行来工作,所以可能不适合这里...