假设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
我想获得一些值(比如说实体的DateCreated)并使用这些值为B set生成文件路径 .
我怎么能实现这一目标?
一些想法,但我不确定这一点 . 1.在某个存储(azure数据湖或azure sql数据库)上选择A 2.store中的值 . 3.构建一个逗号分隔的字符串pStr 4.通过Data Factory将pStr传递给存储过程,该过程生成带有模式的文件路径 .
EDIT
根据@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“,”/ 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“]”
并且脚本甚至没有在它之后编译 .
2 回答
试试这个root链接,这可以帮助你从所有关于u-sql开始:http://usql.io
您的问题的有用链接:https://saveenr.gitbooks.io/usql-tutorial/content/filesets/filesets-with-dates.html
您将需要两个U-SQL作业,但您可以使用ADF Lookup活动来读取文件集 .
您的第一个ADLA作业应该从A中提取数据,构建文件集,并在Azure Storage中提取output to a JSON file .
然后在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语句覆盖,因此不会导致错误 .
我希望这会有所帮助,如果您有其他问题,请告诉我!