过滤数据工厂中多列上的行

时间:2020-11-10 10:35:27

标签: azure filter dataset azure-data-factory

我最近开始研究Microsoft Azure,更确切地说是Data Factory。 我想在Azure ML上处理数据集之前先清理它,因此我已经使用数据流创建了一些步骤来做到这一点。但是,我不知道如何处理多个列。

比方说,我有一个包含15个特征(列)的数据集,我想过滤每个特征的离群值,比如说我有50万行。换句话说,在我的第一列中,可能有15个值是离群值,在我的第二列中,也许是第三列中的5个值,比如说10个,依此类推,但是这些值彼此不同。

我想做的是过滤掉所有高于或低于阈值的值,我想一次对所有列而不是1列执行此操作。因为现在我可以执行此操作,但是我必须为每列创建一个过滤器块,所以这里将是20个过滤器块。 我很确定有办法做到这一点,但我只是找不到方法。

非常感谢您的帮助,如果您有任何疑问或不清楚的地方,请告诉我,我会在这里答复。

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

更新:

如果不满足所有列,则会删除整行。
我想我们可以采取更简单的方法。
在Filter活动中使用表达式:
column1>30 && column1<100 && column2>35 && column2<95 && column3>40 && column3<90

enter image description here


我想出了一种相对方便的方法,我们需要使用两个Lookup活动和两个Filter活动来筛选多个列。
在这里,我将过滤3列,其中列中的数字大于30且小于100。

  1. 这是源中的数据预览, enter image description here

  2. minValueSource,我在Azure datalake gen2的csv中存储了一个最小值。 maxValueSourceminValueSource相同。
    enter image description here

  3. 然后我设置了Lookup1活动。对于您的情况,您需要在此处设置25列。 enter image description here

  4. 然后,我们需要在Lookup1活动中设置Optmize标签。 enter image description here

  5. 数据预览如下所示,如果其中一列的值小于30,将显示nullenter image description here

  6. 在Filter1活动中,我们可以使用表达式!isNull(minValue)过滤小于30的值。 enter image description here

  7. 与Lookup2和Filter2活动的设置相同。我不会在这里显示。 enter image description here

  8. 在接收器处,我们可以设置映射选项卡以选择所需的列。 enter image description here

我认为这比设置20个或更多过滤组要容易。