【发布时间】:2017-09-25 13:57:34
【问题描述】:
我“认为”这个问题与 Azure Data Lake Analytics 所做的查询优化有关;但是让我们看看...
我有 2 个单独的查询 (TVF) 进行聚合,然后有一个最终查询将这 2 个查询连接在一起以获得最终结果。 所以...
Table > Header Query
Table > Detail Query
Result = Header Query + Detail Query
为了测试整个逻辑,我使用过滤器单独运行次要查询,将结果存储到文件中,然后将硬文件用作最终查询的源;这些是总持续时间(分钟)。
Header Query 1.4 (408 rows)
Detail Query 0.9 (3298 rows)
Final Query 0.9 (408 rows)
所以我知道,我最多可以在 3.5 分钟左右得到结果。 但是,我真的不想创建新的中间文件。 我想直接使用 TDF 来提供最终查询。
在最终查询中使用 TDF,作业图在大约 1.5 分钟内达到大约 97% 的进度。 但随后,所有的地狱都崩溃了! 最后一个节点是具有 2,500 个顶点的聚合,表示计算时间为 16 分钟。 所以我的问题......为什么??
这是我不了解 Azure 工作原理的一些基本概念的情况吗?
那么,谁能解释发生了什么? 任何帮助表示赞赏。
最终查询:
@Header =
SELECT [CTNNumber],
[CTNCycleNo],
[SeqStart],
[SeqEnd],
[StartUTC],
[EndUTC],
[StartLoc],
[StartType],
[EndLoc],
[EndType],
[Start Step],
[Start Ctn Status],
[Start Fill Status],
[EndStep],
[End Ctn Status],
[End Fill Status]
FROM [Play].[getCycles3]
("") AS X;
@Detail =
SELECT [CTNNumber],
[SeqNo] AS [SeqNo],
[LocationType],
[LocationID],
[BizstepDescription],
[ContainerStatus],
[FillStatus],
[UTCTimeStampforEvent]
FROM [Play].[getRaw]
("") AS Z;
@result =
SELECT
H.[CTNNumber], H.[CTNCycleNo], H.[SeqStart], H.[SeqEnd]
,COUNT([D].[SeqNo]) AS [SeqCount]
//, COUNT(DISTINCT [LocationID]) AS [#Locations]
FROM
@Header AS [H]
INNER JOIN
@Detail AS [D]
ON
[H].[CTNNumber] == [D].[CTNNumber]
WHERE
[D].[SeqNo] >= [H].[SeqStart] AND
[D].[SeqNo] <= [H].[SeqEnd]
GROUP BY
H.[CTNNumber], H.[CTNCycleNo], H.[SeqStart], H.[SeqEnd]
;
【问题讨论】:
-
回复很安静……这意味着我要么问了一个愚蠢的问题,要么解释错了。我可以做些什么来获得一些兴趣?
标签: azure-data-lake u-sql