全部 -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中加载你的数据? –