【问题标题】:Extract not sending WHERE conditions to SQL Server in DI Studio在 DI Studio 中提取不向 SQL Server 发送 WHERE 条件
【发布时间】:2026-01-19 03:35:01
【问题描述】:

我有一份工作,我想将行从 SQL Server 数据源转移到 SAS 数据集。

在我的提取任务中,我应用了如下条件:

datepart(LastUpdated) eq '14Nov2017'd;

这会连接到我们称之为vw.Sales 的SQL Server 视图。

当我检查 SQL 实例上正在运行的内容时,它看起来像是在选择整个视图,即 650+ 百万行。显然我不希望所有这些都投入工作,然后过滤掉。

除非我遗漏了什么并且我可以看到正在运行的查询是子选择,否则谁能确定我如何确保我的 WHERE 条件正确传递给 SQL?

【问题讨论】:

    标签: sql-server sas


    【解决方案1】:

    SAS 很可能确实在表上执行“SELECT *”并在 SAS 服务器上处理您的查询,而不是让您的 SQL 服务器执行查询。

    原因是 SAS 不知道如何将您的查询翻译成 SQL 服务器语言,这可能是因为 datepart 函数。

    您的选择是将该查询重写为 SAS 能够翻译的内容,或者在“自定义代码”节点中通过显式传递进行提取。

    就重写而言,您可以尝试以下方法:

    where '14NOV2017:00:00:00'dt le lastupdated lt '15NOV2017:00:00:00'dt
    

    【讨论】:

    • Bingo- 我将其更改为 LastUpdated ge '14Nov2017:00:00:00'dt 并正确通过。谢谢