SAS 数据集成 - 从元数据结构创建物理表

问题描述 投票:0回答:3

我需要在一系列有条件运行的连接之后使用附加对象...因此,如果条件未经验证,则连接步骤可能不会执行,并且不会创建他的工作物理数据集。

问题是,如果未创建一个或多个输入物理数据集,则附加步骤会出错。

有没有一种聪明的方法可以从连接的工作表的元数据结构创建物理空表,或者使用附加功能来处理一些未创建的数据集?

创建包含所有字段列表的表并不是真正的解决方案,因为我必须按照 8 个不同的连接复制它,然后复制该作业 10 次...

感谢大家 罗伯托

sas data-integration
3个回答
1
投票

感谢您的评论。

你应该做什么:

  1. 修改您的条件节点,以便在肯定条件下创建值为 MAX 的全局宏变量。在否定条件下创建值为 0 的相同变量。
  2. 用“CREATE TABLE”节点替换有问题的 SQL 步骤
  3. 在“CREATE TABLE”选项中,为“MAXIMUM OUTPUT ROWS (OUTOBS)”指定宏变量。有关这些选项的示例,请参见下图。

所以现在当你的条件不满足时,你总是会得到一张空桌子。当条件满足时,该步骤正常执行。

我必须说我的 DI Studio 版本有点旧。在我的版本中,SQL 节点不允许将宏变量传递给 SQL 选项,只能输入整数。检查您的版本是否允许,因为如果允许,那么您可以修改现有的 SQL 步骤并避免将其替换为另一个节点。

还有一件事,当 OUTOBS 选项小于结果数据集时,您会收到警告。

如果您有任何疑问,请告诉我。

创建表格选项请参见图片:


0
投票

最后我创建了另一个步骤,通过 where 选项卡中的条件 1=0 从源表中提取 0 行。通过这种方式,我有一个空表,如果连接的工作表不存在,我可以在条件运行的 post sql 中与数据/集一起使用。

这不是解决方案,而是有效的解决方法。


0
投票

作为另一种选择,您可以使用 SAS 代码从元数据定义创建表

这是一个核心示例:https://core.sasjs.io/mm__createdataset_8sas.html

© www.soinside.com 2019 - 2024. All rights reserved.