在U-SQL脚本的动态文件夹中写入.dsv文件



我是U-SQL的新手,我试图从一个文件夹中读取多个。dsv文件,并将输出写入动态文件夹/子文件夹中的。dsv文件。到目前为止,我已经成功地读取了多个。dsv文件,并且能够在单个位置(预定义位置)写入文件,但无法将。dsv文件写入多个文件夹/子文件夹。根据文件名定义文件夹和子文件夹。举个例子,如果文件名为ABC_20200421@015814.dsv,它应该从.dsv文件中读取数据,并将其写入文件夹系统:test/ABC/2020/04/21/File_Data.dsv

到目前为止,我的代码是:
DECLARE @ImportFile string = "*.dsv"; -- To read all the .dsv files and move them to folder locations 
DECLARE  @Code String = @ImportFile.Substring(0, 3); 
DECLARE  @CommanName String = @ImportFile.Substring(4, 14); File_Contents
DECLARE  @Year String = @ImportFile.Substring(18, 4); 
DECLARE  @Month String = @ImportFile.Substring(22, 2); 
DECLARE  @File_Date String = @ImportFile.Substring(24, 2); 
@result=
SELECT col1,col2,col3 
FROM Table1
//Writing to dsv file:
OUTPUT @result
TO "test/"+@Code+"/"+@Year+"/"+@Month+"/"+@File_Date+"/File_Data.dsv"
USING Outputters.Text(delimiter : '|', quoting: false);
在运行代码时,我得到一个错误:

E_CSC_USER_EXPRESSIONNOTCONSTANTFOLDABLE:表达式不能被常量折叠。

细节:

在令牌"/测试/",在# # #:

@result输出# # #"/测试/"+ @Code +"/"+ @Year +"/"+ @Month +"/"+ @File_Date +"/STAY_REVENUES.dsv"使用输出。文本(分隔符:'|',引号:false)

任何帮助都会很感激。提前谢谢。

您得到的错误是由于OUTPUT语句。

U-SQL的OUTPUT语句将指定的行集写入提供的文件路径URI。文件路径URI必须在OUTPUT表达式的TO子句中作为静态字符串表达式(可以常量折叠的表达式)提供。

试试这个:当你在SELECT语句中使用@result时,同样应该在OUTPUT语句中使用,如本官方页面所述。

OUTPUT @result
TO "test/"+@Code+"/"+@Year+"/"+@Month+"/"+@File_Date+"/File_Data.CSV"
USING Outputters.Csv(outputHeader: false, quoting: false);

相关内容

  • 没有找到相关文章

最新更新