【发布时间】:2018-02-20 14:52:51
【问题描述】:
我有一个数据湖,只要源系统更新,它就会发送数据。这可能导致单个项目被多次发送,针对它的多个版本。
在 USQL 中,我可以检索所有内容,然后对数据集进行分区并获取每个项目的最新版本。
但是,视图中似乎没有可用的变量?我想要一个便于其他团队访问的视图。例如
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();
这在视图中不起作用。有没有办法简化这种分区,而不是放入每个查询中。
可能是通过自定义提取器实现此目的的一种方法?它似乎通过循环遍历每一行来工作,所以可能不适合这里......
【问题讨论】:
-
可能自己刚刚意识到答案...表值函数可能是我需要的。
-
你是对的。
标签: azure-data-lake u-sql