过滤数据工厂中多列的行

Filter rows on multiple columns in data Factory

我最近开始研究 Microsoft Azure,更准确地说是数据工厂。 我想在 Azure ML 中处理数据集之前清理我的数据集,因此我使用数据流创建了一些步骤来执行此操作。但是,我不知道如何使用多列让我解释一下。

假设我有一个包含 15 个特征(列)的数据集,我想过滤每个特征的异常值,假设我有 50 万行。换句话说,在我的第一列中可能有 15 个异常值,在我的第二列中可能有 5 个,在我的第三列中可能有 5 个异常值,比如 10 等等......但这些值位于彼此不同的行上。

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

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

在此先感谢您的帮助!

更新:

如果不满足其中的列,是否会删除整行。
我想我们可以采取更简单的方法。
在过滤器中使用表达式 activity:
column1>30 && column1<100 && column2>35 && column2<95 && column3>40 && column3<90


我想到了一个比较方便的方法,我们需要使用两个Lookup活动和两个Filter活动来过滤多个列。
这里我将过滤3列,其中列中的数字大于30小于100。

  1. 这里是源码中的数据预览,

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

  3. 然后我设置Lookup1activity。对于您的情况,您需要在此处设置 25 列。

  4. 然后我们需要在 Lookup1 activity 处设置 Optmize 选项卡。

  5. 数据预览是这样的,如果其中一列包含的值小于30,就会有null

  6. 在Filter1 activity处,我们可以使用表达式!isNull(minValue)来过滤小于30的值。

  7. Lookup2 和 Filter2 的设置相同activity。我不会在这里展示。

  8. 在sink处,我们可以设置映射选项卡来选择我们需要的列。

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