Azure数据工厂-无法预览数据

xwbd5t1u  于 2023-06-30  发布在  其他
关注(0)|答案(2)|浏览(118)

我有一个ADF管道,它在数据流中使用基本转换。因此,数据流非常简单,这里没有什么复杂的事情。只有几个查找和派生列。
直到今天早些时候,它一直工作得很好,但从下午开始,输出数据的预览在每一步都超时了。其中一个查找表有大约700万条记录,但直到今天早些时候它仍然显示良好。我在调试设置中更改了行限制,但输出数据预览仍然超时,没有任何结果。甚至派生列的数据预览也超时了。
我想到无论如何都要运行管道,以查看加载到最终表中的内容。但这失败了,因为显然派生列得到了一些NULL值,并将其传递给SINK表结构中的NOT NULL字段。所以,现在我真的需要预览步骤输出。
数据预览需要很长时间,然后出现超时错误。请建议是否有任何改变ADF的性能。

vtwuwzda

vtwuwzda1#

如果没有太多的细节到您的设置,这是很难准确回答。
但是,如MS文档中针对内部服务器错误所述
数据流的成功执行取决于许多因素,包括计算大小/类型、要处理的源/宿的数量、分区规范、所涉及的转换、数据集的大小、数据偏斜度等。
在此处进一步查看故障排除提示
可能存在大量空值或缺失值,这可能是由于采样的行太少而导致的。尝试更新调试行限制并刷新数据。
有关更多指导,请参见Integration Runtime performance
来自文档,建议
进入【调试设置】,增加源行数限制。选择具有足够大的数据流群集以处理更多数据的Azure IR。
即使集成运行时弹性分配了计算资源,您也可以手动setup一个具有更高容量的新集成运行时。

此外,由于您提到了数百万条记录,因此当您的管道中包含并行执行的数据流或需要使用大型数据集进行测试的数据流时,请选择“使用Activity Runtime”,以便服务可以使用您在数据流Activity中选择的Integration Runtime。这将允许数据流在多个集群上执行,并且可以适应并行数据流执行。

af7jpaap

af7jpaap2#

我通常使用两种方法来使数据预览“渲染得更快”,如果这些方法失败,则使用另一种方法来检查数据:
1.在SQL源上使用内置可选过滤器的表达式。(仅适用于SQL源或其他可以在其上制定查询的源)。这种方法是最有效的。
1.确定一个通常可用于减少行容量的“过滤器列”。例如“销售订单号”列或日期。
1.为此筛选器列的数据流创建一个参数。默认它为一个计算结果为空值的表达式,如“toString(null())”。在我的示例中,我将此参数称为“SalesOrderFilter”
1.在源转换中,使用表达式构建查询-通常是“SELECT *”类型的查询。在该表达式中,使用“$SalesOrderFilter”可以选择过滤结果集。如“SELECT * FROM [Schema].[Table]”+ if(isNull($SalesOrderFilter),“",“WHERE [销售订单] = '”+ $SalesOrderFilter +“')”
1.在预览时,设置“调试设置”以将默认参数值更改为您希望过滤到的值。
1.手动将行的子集构建到单独的数据库/湖/表中,并切换到这些数据库/湖/表进行调试。这比上面的更少可用-更多的手工劳动-但计算效率很高。
1.尽可能早地向流中抛出一个简单的Filter转换。对于当前编辑会话,这可能完全是临时的。这适用于任何数据源,但效率不如第一种解决方案,因为集群仍然读取所有(示例)行,然后过滤它们。
1.如果所有其他方法都失败或实现起来太麻烦-最简单的替代方法是“使用recreatetable向临时表添加一个分支和一个新的接收器”
1.在想要预览但无法预览的变换上按“+”按钮。
1.添加一个接收器,配置它以在任何你喜欢的地方写入。
1.如果它是一个SQL表,启用“重新创建表”选项。
1.从管道运行流。您的完整数据集将被写入。如果它是SQL,则表将使用NVARCHAR(MAX)NULLABLE列创建,因此没有运行时错误。

相关问题