Pliki wejściowe (U-SQL) stwierdza Ścieżki wejściowe mogą przyjmować dowolną z następujących formularzy:

Input_File_Path :=                                                                                       
     Single_File_Path 
|    List_File_Path 
|    File_Set_Path.

Jako przykład List_File_path zapewniają:

@searchLog =  
    EXTRACT UserId          int  
          , Start           DateTime  
          , Region          string  
          , Query           string  
          , Duration        int  
          , Urls            string  
          , ClickedUrls     string
    FROM "/Samples/Outputs/ExampleA.csv",
         "/Samples/Outputs/ExampleB.csv"
    USING Extractors.Csv();

Mam następujący kod:

DECLARE EXTERNAL @FileList string = "ListOfFiles.txt";
@searchLog =  
    EXTRACT UserId          int  
          , Start           DateTime  
          , Region          string  
          , Query           string  
          , Duration        int  
          , Urls            string  
          , ClickedUrls     string
    FROM @FileList
    USING Extractors.Csv();

Jeśli przejdę do parametru FileList jako @variables('FileList') gdzie FileList jest tablicą, otrzymuję następujący błąd:

Error Id: E_STORE_USER_FAILURE_83090017, Error Message: Invalid pathname Cosmos Path:

To traktuje plikilectilec, jakby to było: "System.Collections.Generic.List 1 [System.Object] "`

Jeśli przejdę do parametru FileList jako @join(variables('FileList'),','), jeśli traktuje plikilika, jakby to było: "Dir/File1.txt,Dir/File2.txt", jak to jest, jeśli jest to pojedyncza nazwa pliku.

Próbowałem również za pomocą @join(variables('FileList'),',') z tym:

DECLARE EXTERNAL @FileList string = "ListOfFiles.txt";
@searchLog =  
    EXTRACT UserId          int  
          , Start           DateTime  
          , Region          string  
          , Query           string  
          , Duration        int  
          , Urls            string  
          , ClickedUrls     string
    FROM @FileList.Split(',')
    USING Extractors.Csv();

Ale to generuje następujący błąd: C# error CS0029: Cannot implicitly convert type 'string[]' to 'string'

Czy można to obejść?

0
JSWilson 21 październik 2020, 22:41

1 odpowiedź

Najlepsza odpowiedź

Spróbuj tego:

U-SQL:

DECLARE EXTERNAL @FileList1 string = "ListOfFiles.txt";
DECLARE EXTERNAL @FileList2 string = "ListOfFiles.txt";

@searchLog =  
    EXTRACT UserId          int  
          , Start           DateTime  
          , Region          string  
          , Query           string  
          , Duration        int  
          , Urls            string  
          , ClickedUrls     string
    FROM @FileList1,@FileList2
    USING Extractors.Csv();

OUTPUT @searchLog
TO "/output/exampleD.csv" 
USING Outputters.Csv();

Parametry: Wpisz opis obrazu tutaj

0
Steve Zhao 22 październik 2020, 06:42