全部 -U-SQL Inner Join創建了一個巨大的寫入文件
我在使用ADLA加入表並將它們加載到Azure SQL DW時遇到了一些問題。
我被困在加載過程之一,不知道如何解決這個問題。我有一些購買信息,當我將內部系統拖入ADLS時,每個輸出文件大約有25 MB,當我嘗試將它們連接到ADLA作業中的「INNER JOIN」時,它會持續運行很長時間。運行時,我看到輸出文件繼續超過5+ GB。我覺得這對於一個25 MB的文件來說太多了,並且不確定我是否做了什麼錯誤的事情(從VS運行時附上參考的屏幕截圖)。
我的過程是 - 1-使用ADF從內部數據庫將數據加載到雲ADLS存儲2-使用ROUND ROBIN選項運行ADLA作業以將ADLS文件拖入ADLA表和分區以避免數據偏斜問題3- ADLA作業會在ADLS存儲中創建一個聚合文件4 ADF管道將#3文件加載到Azure SQL中DW
任何指針或幫助都可能非常有用。
感謝,Shabbir
下面是代碼(我已刪除了所有的字段名和客戶信息)。希望這可以幫助。
DECLARE @dir = "/{date:yyyy}/{date:MM}/{date:dd}/<FILE PATH>/";
DECLARE @in_1 string = <FILE #1>;
DECLARE @in_2 string = <FILE #2>;
DECLARE @out string = <OUTPUT FILE>;
@file1 =
EXTRACT
<25 COL. WITH ALL NULLABLE>
date DateTime
FROM @in_1
USING Extractors.Text(delimiter : '|');
@file2 =
EXTRACT
<40 COL. WITH ALL NULLABLE>
date DateTime
FROM @in_2
USING Extractors.Text(delimiter : '|');
@output =
SELECT
<25 + 40 COL. FROM INPUT FILES>
FROM @file1 AS f1
INNER JOIN @file2 AS f2
ON f1.join1 == f2.join2;
OUTPUT @purchase
TO @out
USING Outputters.Text(delimiter : '|');
這是運行時拋出一個ADF管道和使用外部參數的日期和文件路徑。
請發佈您正在使用的U-SQL代碼。 – wBob
鮑勃,我在我的問題中添加了代碼片段。提前致謝。 –
如果您的連接正在增加數據量,可能的原因是您的連接列中有重複的值。如果一個數值在左邊的表格中出現100次,在右邊的表格中出現1000次,這將導致輸出(笛卡爾乘積)中的100,000行。你能否檢查一下,例如通過在Power BI中加載你的數據? –