如何在 USQL 中定义多个输入文件模式?

颤音

我有 U-SQL 脚本,我需要在其中处理一些数据。数据存储在 blob 中,在此文件夹结构中每天有大约 100 个文件:/{year}/{month}/{day}/{hour}/filenames.tsv

获取一天的数据很容易,只需在最后放一个通配符,它​​就会挑选出当天所有小时的所有文件。

但是,在我的脚本中,我想读出当天和前一天的最后 2 小时。天真的方法是以这种方式使用 3 个提取语句:

DECLARE @input1 = @"/data/2017/10/08/22/{*}.tsv";
DECLARE @input2 = @"/data/2017/10/08/23/{*}.tsv";
DECLARE @input3 = @"/data/2017/10/09/{*}.tsv";

@x1 = EXTRACT .... FROM @input1 USING Extractors.Tsv();
@x2 = EXTRACT .... FROM @input2 USING Extractors.Tsv();
@x3 = EXTRACT .... FROM @input3 USING Extractors.Tsv();

但是在我的情况下,使用 AvroExtractor 的每个提取行都非常长且复杂(约 50 列),所以我真的更愿意只指定列和提取器一次而不是 3 次。此外,通过有 3 个输入,呼叫方不可能决定应该读取前几天的多少小时。

我的问题是如何以一种方便的方式定义它,最好只使用一个提取语句?

鲍勃

您可以将您的逻辑包装到一个 U-SQL 存储过程中,以便对其进行封装。然后你只需要对 proc 进行几次调用。一个简单的例子:

CREATE PROCEDURE IF NOT EXISTS main.getContent(@inputPath string, @outputPath string)
AS
BEGIN;

    @output =
        EXTRACT 
         ...
        FROM @inputPath
        USING Extractors.Tsv();


    OUTPUT @output
    TO @outputPath
    USING Outputters.Tsv();

END;

然后调用它(未经测试):

main.getContent (
    @"/data/2017/10/08/22/{*}.tsv",
    @"/output/output1.tsv"
    )

main.getContent (
    @"/data/2017/10/08/23/{*}.tsv",
    @"/output/output2.tsv"
    )

main.getContent (
    @"/data/2017/10/09/{*}.tsv",
    @"/output/output3.tsv"
    )

这可能是一种方法吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

USQL 提取文件子集

来自分类Dev

您如何定义日期范围,然后在 USQL 中跨复杂文件集进行查询?

来自分类Dev

如何在usql窗口表达式中获取最后一个非空值?

来自分类Dev

USQL - 如何使用 xml 提取器从 xml 文件中提取属性值

来自分类Dev

USQL Azure数据湖中的更新

来自分类Dev

USQL 在用户定义的类型上使用 ARRAY_AGG

来自分类Dev

如何在输入中接受多个HTML5模式?

来自分类Dev

在USQL中联接来自不同路径的文件

来自分类Dev

从Azure Blob存储中的DLL创建USQL程序集

来自分类Dev

如何在php glob()中定义多个模式

来自分类Dev

在USQL中编写自定义提取器以跳过存在编码问题的行

来自分类Dev

如何在多个文件中定义控制器-AngularJs

来自分类Dev

从 JSON 转换时如何标准化 USQL 的输出以包含所有列的数据

来自分类Dev

USQL 自定义提取器 - 最新版本

来自分类Dev

如何替换多个文件中的某个模式?

来自分类Dev

如何在模式定义中记录val

来自分类Dev

如何在模式中定义可选部分?

来自分类Dev

USQL急性重音

来自分类Dev

如何在Linux中以某种模式重命名目录中的多个文件?

来自分类Dev

如何在R中输入具有多个data.frames的自定义函数?

来自分类Dev

如何在S3 boto3中删除多个文件和特定模式

来自分类Dev

如何在Perl中的目录下匹配多个文件的正则表达式模式?

来自分类Dev

如何在多个文件中对两种模式进行grep

来自分类Dev

如何在多个文件中注释与 gvim 中的模式不匹配的行

来自分类Dev

如何在python中读取文件的同一行上列出的多个输入数据

来自分类Dev

如何在Specflow中的同一功能文件中提供多个数据作为输入

来自分类Dev

如何在D3中可视化具有不同输入文件的多个图形?

来自分类Dev

如何在jquery中为输入文件标签提供“多个”属性

来自分类Dev

如何在Gradle中串联多个文件?

Related 相关文章

  1. 1

    USQL 提取文件子集

  2. 2

    您如何定义日期范围,然后在 USQL 中跨复杂文件集进行查询?

  3. 3

    如何在usql窗口表达式中获取最后一个非空值?

  4. 4

    USQL - 如何使用 xml 提取器从 xml 文件中提取属性值

  5. 5

    USQL Azure数据湖中的更新

  6. 6

    USQL 在用户定义的类型上使用 ARRAY_AGG

  7. 7

    如何在输入中接受多个HTML5模式?

  8. 8

    在USQL中联接来自不同路径的文件

  9. 9

    从Azure Blob存储中的DLL创建USQL程序集

  10. 10

    如何在php glob()中定义多个模式

  11. 11

    在USQL中编写自定义提取器以跳过存在编码问题的行

  12. 12

    如何在多个文件中定义控制器-AngularJs

  13. 13

    从 JSON 转换时如何标准化 USQL 的输出以包含所有列的数据

  14. 14

    USQL 自定义提取器 - 最新版本

  15. 15

    如何替换多个文件中的某个模式?

  16. 16

    如何在模式定义中记录val

  17. 17

    如何在模式中定义可选部分?

  18. 18

    USQL急性重音

  19. 19

    如何在Linux中以某种模式重命名目录中的多个文件?

  20. 20

    如何在R中输入具有多个data.frames的自定义函数?

  21. 21

    如何在S3 boto3中删除多个文件和特定模式

  22. 22

    如何在Perl中的目录下匹配多个文件的正则表达式模式?

  23. 23

    如何在多个文件中对两种模式进行grep

  24. 24

    如何在多个文件中注释与 gvim 中的模式不匹配的行

  25. 25

    如何在python中读取文件的同一行上列出的多个输入数据

  26. 26

    如何在Specflow中的同一功能文件中提供多个数据作为输入

  27. 27

    如何在D3中可视化具有不同输入文件的多个图形?

  28. 28

    如何在jquery中为输入文件标签提供“多个”属性

  29. 29

    如何在Gradle中串联多个文件?

热门标签

归档