不要使用下拉列表中的表选择器,除非您需要每一行中的每一列,否则您永远不应该这样做,而是编写查询以仅拉回匹配或扩充现有数据所需的列。在您的情况下,您将需要添加一个有点挑剔的过滤器。
我发现的最佳方法是在字符串类型的变量中编写查找查询。在其中,我将构建查询并应用所需的过滤器。下面,您会看到我定义了两个变量。一个 int 将用作我的过滤器,然后是使用它的查询本身。
我的 SourceQuery 变量上的表达式是
"SELECT
D.rn
FROM
(
SELECT TOP 10
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) * 2 AS rn
FROM
sys.all_columns AS SA
) AS D(rn)
WHERE D.rn <= " + (DT_WSTR, 10) @[User::MaxID]
我的数据流看起来像
我有我的来源,它会进行查找并根据匹配的结果进入两个存储桶之一。我的源查询只生成数字 1 到 10,查找是生成从 2 到 20 的偶数的查询。
在设计时,该查询看起来像
SELECT
D.rn
FROM
(
SELECT TOP 10
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) * 2 AS rn
FROM
sys.all_columns AS SA
) AS D(rn)
正常运行将导致存储桶之间的拆分为 50/50
目标当然是使查找查询采用类似于源组件之一的参数,但您很快就会发现
SELECT
D.rn
FROM
(
SELECT TOP 10
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) * 2 AS rn
FROM
sys.all_columns AS SA
) AS D(rn)
WHERE D.rn > ?
不飞。相反,您必须返回控制流并选择数据流,右键单击并选择属性。在数据流的窗口中,转到表达式并单击省略号 (...)
将有一个名为您的查找任务的属性。分配使用表达式使其全部动态的变量,瞧,最大值为 6 我只找到 3 个匹配项
最后一点,部分缓存可能是也可能不是您正在寻找的东西。这是一个实际的查找设置,它控制它如何平衡查找数据与本地缓存的成本。完整缓存会将适用范围的所有指定列放入内存中,这就是您只想指定所需列的原因。如果你能把它缩小到几列,即使它是数百万行,你也可能不会感到痛苦。