【问题标题】:U-SQL - Execution related queriesU-SQL - 执行相关查询
【发布时间】:2017-05-03 06:11:50
【问题描述】:

我编写了多个 U-SQL 脚本并将其输出存储在 ADLA 中,基于此我没有什么问题。

  • 我们如何在 U-SQL 中运行相关作业?
  • 如何根据某些条件执行语句,例如
If RecordCount > 0 then
     insert into table1
endif
  • 我们如何安排 U-SQL 作业?
  • 我们可以编写多个脚本并从主脚本中调用它们吗?
  • 在脚本执行期间,编译器准备并编译代码。花了将近30-40秒。我们如何捆绑编译后的代码并创建 ADF 管道?

【问题讨论】:

  • U-SQL 不支持UPDATE 的概念并且控制流有限(例如if ... then .... else)。使用 Azure 数据工厂计划作业的一种选择。您可以将代码封装在存储过程、视图和函数中。
  • 更新了我的问题...我知道 U-SQL 不支持更新,我的问题是基于某些条件,我想插入到特定的表中。
  • 只有两个“INSERT”语句,其中“WHERE”子句控制进入表的内容。

标签: azure azure-blob-storage azure-data-factory azure-data-lake u-sql


【解决方案1】:

您可以使用 Azure 数据工厂或使用 SDK(Powershell、C#、Java、node.js、Python)之一编写自己的调度程序来调度和编排 U-SQL 作业。

U-SQL 支持两种条件执行方式:

  1. 如果您的条件可以在编译时进行评估,例如,当您传递参数值或check for the existence of a file 时,您可以使用IF statement
  2. 如果您的条件只能在脚本执行期间确定,那么您可以使用WHERE 子句,正如 wBob 在他的评论中概述的那样。

正如 wBob 所提到的,您可以将大部分 U-SQL 语句封装在过程中,然后从其他脚本/过程中调用它们,或者如果您需要脚本文件重用,您可以编写自己的包含/编排方式。

目前无法重用和提交刚刚编译的代码,因为编译取决于确切的信息,例如存在哪些文件和访问数据的统计信息。

【讨论】:

  • 我可以在 FILE.EXISTS("/raw_files/abc*.txt) 中使用通配符吗?可以吗?
  • 此时它不支持通配符。请随时通过aka.ms/adlfeedback 提交功能请求。
猜你喜欢
  • 2018-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多