让我们假设azure data lake store上有两个文件集A和B.
/A/Year/
/A/Month/Day/Month/
/A/Year/Month/Day/A_Year_Month_Day_Hour
/B/Year/
/B/Month/Day/Month/
/B/Year/Month/Day/B_Year_Month_Day_Hour
我想得到一些值(让我们说A实体的DateCreated)并使用这些值为B set生成文件路径。
我怎样才能做到这一点?
一些想法,但我不确定这一点。 1.从A中选择值 2.存储在某个存储(azure数据湖或azure sql数据库)上。 3.构建一个逗号分隔的字符串pStr 4.通过Data Factory将pStr传递给存储过程,该过程生成带模式的文件路径。修改
根据@mabasile_MSFT回答
这就是我现在所拥有的。 生成json文件的第一个USQL脚本,它看起来如下。
{
FileSet:["/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__12",
"/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__13",
"/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__14",
"/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__15"]
}
包含Lookup和第二个USQL脚本的ADF管道。 Lookup读取这个json文件的FileSet属性,因为我知道我需要以某种方式将这个json数组传递给第二个脚本吧? 但usql编译器生成类似
的字符串变量DECLARE @fileSet string =" [" / Data / SomeEntity / 2018/3/5 / SomeEntity_2018_3_5__12", " /数据/ SomeEntity /三分之二千〇一十八/ 5 / SomeEntity_2018_3_5__13&#34 ;, " /数据/ SomeEntity /三分之二千〇一十八/ 5 / SomeEntity_2018_3_5__14&#34 ;, " /数据/ SomeEntity /三分之二千〇一十八/ 5 / SomeEntity_2018_3_5__15"]"
并且脚本甚至没有在它之后编译。
答案 0 :(得分:2)
您将需要两个U-SQL作业,但您可以使用ADF Lookup活动来读取文件集。
您的第一个ADLA作业应该从A中提取数据,构建文件集,并在output to a JSON file中提取Azure Storage。
然后在ADF中使用Lookup activity从Azure存储中的JSON文件中读取文件集名称。
然后在ADF中定义第二个U-SQL活动。在U-SQL活动中将文件集设置为参数(在脚本>高级下,如果您使用在线UI) - 该值看起来像@{activity('MyLookupActivity').output.firstRow.FileSet}
(请参阅上面的查找活动文档)。
ADF将在U-SQL参数中将其作为DECLARE语句写入U-SQL脚本的顶部。如果你想在脚本中编写一个默认值,请使用DECLARE EXTERNAL - 这将被ADF写入的DECLARE语句覆盖,因此不会导致错误。
我希望这有帮助,如果您有其他问题,请告诉我们!
答案 1 :(得分:0)
试试这个root链接,这可以帮助你从u-sql开始: http://usql.io
您的问题的有用链接: https://saveenr.gitbooks.io/usql-tutorial/content/filesets/filesets-with-dates.html