【问题标题】:USQL Custom Extractor - Latest VersionUSQL 自定义提取器 - 最新版本
【发布时间】: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


【解决方案1】:

视图遵循在单个表达式上不带参数定义的 SQL 语言。

您想要参数化视图,即table-valued function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多