【发布时间】:2017-09-26 15:29:40
【问题描述】:
长期读者第一次提问。
使用 SAS Data Integration Studio,当您在表选项高级选项卡中创建汇总转换时,您可以自动将 where 语句添加到您的代码中。不幸的是,它添加了一些代码,使这个解析不正确。在 where 文本框中输入以下内容:
TESTFIELD = "TESTVALUE"
创造
%let _INPUT_options = %nrquote(WHERE = %(TESTFIELD = %"TESTVALUE%"%));
在代码中,使用了
proc tabulate data = &_INPUT (&_INPUT_options)
但解析为
WHERE = (TESTFIELD = "TESTVALUE")
_
22
错误:解析 WHERE 子句时出现语法错误。错误 22-322:语法 错误,期待以下之一:名称、带引号的字符串、 数字常量,日期时间常量, 缺失值,(, *, +, -, :, INPUT, NOT, PUT, ^, ~.
我的问题是:有没有办法在 where 语句框中添加一个函数,允许在此处正确添加此引号?
请注意,所有函数在自动添加到 where 语句时都会获得前面的 %,我无法控制它。这似乎应该相对容易修复,但我还没有找到简单的方法。
【问题讨论】:
-
您是否生成了 PROC TABULATE 代码?还是该工具也生成了它?那就是你可以添加 %UNQUOTE() 以删除在 %LET 语句中添加的宏引用吗?
-
很遗憾没有,它是自动生成的。我唯一可以调整的部分是 where 语句的文本框。其他一切都是由此产生的。
-
在这种情况下,请向 SAS 提出支持请求。也许有一些选项可以防止 DIS 添加宏引用。
-
谢谢,我试试看。
-
是的,如果 DIS 正在执行 all 这一切,那么这是 DIS 问题。如果您完全可以控制代码,则可以使用我的答案,但如果您的答案为零,则不能。
标签: sas integration where summary