2

У меня есть два файла CSV, который содержит много n-столбцов. Мне нужно объединить эти два файла csv с одним CSV-файлом, который имеет один уникальный столбец из оба входных файла.Слияние двух файлов CSV в Azure Data Factory с использованием пользовательской активности .NET

Я просмотрел тщательно все блоги и sites.All приведет в использовании пользовательских .NET Activity.So я просто пройти через this site

Но до сих пор я не в состоянии выяснить, какая часть в C# Coding.Can любой из них делится кодом для того, как объединить эти два файла CSV, используя пользовательскую .NET-активность в Azure Data Factory.

+0

Это звучит как активность базы данных. Просто импортируйте два файла в таблицы базы данных Azure SQL, используя операцию копирования (которая поддерживает импорт файла CSV в базу данных) и присоединяется к ним там, например, с помощью операции Stored Proc; не требуется никакого специального кодирования. – wBob

+0

У меня есть идея использовать активность улья, чтобы простейший способ сделать преобразование в рамках одной активности. Как каждая идея, которую вы предоставили, будет занимать два вида деятельности! – Jayendran

+0

Вы бы развернули целый кластер HDInsight, чтобы объединить несколько CSV-файлов? Возможно, вам стоит подумать о стоимости различных опций, а также о текущих расходах на обслуживание, т. Е. Очень удобный код сложнее поддерживать/отлаживать/документировать, а не общий код, используя встроенные задачи. Параметр Azure Database является хорошим, если у вас уже есть один доступный в вашей подписке. Размышляя об этом, U-SQL и модель Pay-As-You-Go могут быть лучше подходят. Я приведу вам пример, можете ли вы разместить некоторые примеры данных и ожидаемые результаты? – wBob

ответ

1

Вот пример того, как присоединиться к этим двум файлам с разделителями табуляции в столбце Zip_Code с использованием U-SQL. В этом примере предполагается, что оба файла хранятся в Azure Data Lake Storage (ADLS). Этот сценарий может быть легко включены в трубопровод Factory Data:

// Get raw input from file A 
@inputA = 
    EXTRACT 
     Date_received string, 
     Product string, 
     Sub_product string, 
     Issue string, 
     Sub_issue string, 
     Consumer_complaint_narrative string, 
     Company_public_response string, 
     Company string, 
     State string, 
     ZIP_Code string, 
     Tags string, 
     Consumer_consent_provided string, 
     Submitted_via string, 
     Date_sent_to_company string, 
     Company_response_to_consumer string, 
     Timely_response string, 
     Consumer_disputed string, 
     Complaint_ID string 

    FROM "/input/input48A.txt" 
    USING Extractors.Tsv(); 


// Get raw input from file B 
@inputB = 
    EXTRACT Provider_ID string, 
      Hospital_Name string, 
      Address string, 
      City string, 
      State string, 
      ZIP_Code string, 
      County_Name string, 
      Phone_Number string, 
      Hospital_Type string, 
      Hospital_Ownership string, 
      Emergency_Services string, 
      Meets_criteria_for_meaningful_use_of_EHRs string, 
      Hospital_overall_rating string, 
      Hospital_overall_rating_footnote string, 
      Mortality_national_comparison string, 
      Mortality_national_comparison_footnote string, 
      Safety_of_care_national_comparison string, 
      Safety_of_care_national_comparison_footnote string, 
      Readmission_national_comparison string, 
      Readmission_national_comparison_footnote string, 
      Patient_experience_national_comparison string, 
      Patient_experience_national_comparison_footnote string, 
      Effectiveness_of_care_national_comparison string, 
      Effectiveness_of_care_national_comparison_footnote string, 
      Timeliness_of_care_national_comparison string, 
      Timeliness_of_care_national_comparison_footnote string, 
      Efficient_use_of_medical_imaging_national_comparison string, 
      Efficient_use_of_medical_imaging_national_comparison_footnote string, 
      Location string 

    FROM "/input/input48B.txt" 
    USING Extractors.Tsv(); 


// Join the two files on the Zip_Code column 
@output = 
    SELECT b.Provider_ID, 
      b.Hospital_Name, 
      b.Address, 
      b.City, 
      b.State, 
      b.ZIP_Code, 
      a.Complaint_ID 

    FROM @inputA AS a 
     INNER JOIN 
      @inputB AS b 
     ON a.ZIP_Code == b.ZIP_Code 
    WHERE a.ZIP_Code == "36033"; 


// Output the file 
OUTPUT @output 
TO "/output/output.txt" 
USING Outputters.Tsv(quoting : false); 

Это также может быть преобразован в хранимую процедуру U-SQL с параметрами для имен файлов и почтовый индекс.

Есть, конечно, способы достижения этого, каждый из которых имеет свои плюсы и минусы. Например, пользовательская активность .net может чувствовать себя более комфортно для кого-то с фоном .net, но для его запуска вам потребуется вычислить. Импорт файлов в базу данных Azure SQL будет хорошим вариантом для тех, у кого есть фон SQL/база данных и Azure SQL DB в подписке.

 Смежные вопросы

  • Нет связанных вопросов^_^