Вот пример того, как присоединиться к этим двум файлам с разделителями табуляции в столбце 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 в подписке.
Это звучит как активность базы данных. Просто импортируйте два файла в таблицы базы данных Azure SQL, используя операцию копирования (которая поддерживает импорт файла CSV в базу данных) и присоединяется к ним там, например, с помощью операции Stored Proc; не требуется никакого специального кодирования. – wBob
У меня есть идея использовать активность улья, чтобы простейший способ сделать преобразование в рамках одной активности. Как каждая идея, которую вы предоставили, будет занимать два вида деятельности! – Jayendran
Вы бы развернули целый кластер HDInsight, чтобы объединить несколько CSV-файлов? Возможно, вам стоит подумать о стоимости различных опций, а также о текущих расходах на обслуживание, т. Е. Очень удобный код сложнее поддерживать/отлаживать/документировать, а не общий код, используя встроенные задачи. Параметр Azure Database является хорошим, если у вас уже есть один доступный в вашей подписке. Размышляя об этом, U-SQL и модель Pay-As-You-Go могут быть лучше подходят. Я приведу вам пример, можете ли вы разместить некоторые примеры данных и ожидаемые результаты? – wBob