问题标签 [sas-dis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
105 浏览

sas - SAS DI LAG1 替代方案?

尝试使用 SAS 中的 LAG 函数在迁移到 SAS DI 中复制一段代码,但是 SAS DI 中似乎根本没有相同的函数。目前使用 SAS DI 4.21,以期很快升级到 4.9。

所以我的问题是,是否有另一种方法可以在 SAS DI 中复制以下代码:

干杯,

0 投票
1 回答
491 浏览

sas - SAS 是否有一个宏来格式化用户编写的 DI 转换的输出?

使用 SAS Data Integration (DI) Studio 开发 ETL 程序时,您指定的每个转换都有一个简洁的用户界面来指定您创建的数据集(=表)的列及其类型、长度和格式。

当现有的转换无法完成工作并且需要用户编写代码时,您应该尽可能使用点击式界面,因为

  • 它支持影响分析和反向影响分析
  • 您的继任者可能不会深入研究 SAS 基本代码,除非他们真的需要
  • 如果他们需要更改列或格式,他们希望更改用户界面中的规范就可以完成这项工作

幸运的是,SAS 向程序员公开了用户在宏变量中编写的转换的输出格式

所以我经常把我的代码写在用户写的转换里面

SAS 是否提供嵌入式宏或其他东西来做同样的事情?

为了完整性:SAS公开输出结构的方式看起来像

0 投票
1 回答
199 浏览

sas - 在 SAS DI 上运行 cast 语句时出错

我目前正在尝试通过 SAS DI 自动化一段我用 SAS EG 编写的代码。

虽然它在 SAS EG 中运行没有任何问题,但 DI 在我的 Teradata 服务器上执行的 SQL 语句上返回错误。

错误如下:

这是导致错误的行:

此强制转换语句是必要的,因为 EV_ID 是 BIGINT,否则 SAS 将无法使用此字段创建表。

完整代码如下:

请问你能帮忙吗?

谢谢你。

0 投票
1 回答
171 浏览

sql - 选择具有 datediff 1 和最新时间​​戳的行

示例数据。想要保留最后一行。 抱歉,可能有一个非常简单的解决方案,但我是 SQL 和 SAS 数据集成工作室的新手。代码在 SAS 语言的“proc SQL”中。

我正在尝试在 SAS DI 中创建工作,但无法删除错误的行。这是数据集。没有主键,但日期应该是唯一的。因此,每个日期应该只有一行。

我想保留 datediff 为 1 的最新时间戳的行。在此示例中,它表示示例数据中的最后一行。

我试过这段代码没有成功:

0 投票
1 回答
195 浏览

teradata - 使用 SAS DI studio 4.902 对 teradata 中的表进行分区

对于 ETL 操作,我们使用 SAS DI studio,最后将表加载到 Teradata 中。DDL 在 SAS DI Studio 中为创建的表动态生成。但是当我们想要自定义 DDL 以包含分区时,它会引发错误。任何人都可以提出解决方法吗?注意:我们不能先在 Teradata 中创建 DDL,然后在 SAS DI Studio 中注册表以使用它。

在表属性->选项->高级中并在创建表选项中编写自定义 SQL 它工作正常UNIQUE PRIMARY INDEX(NOTI_DT) 但是当我们尝试

它抛出一个错误: 图 1

0 投票
0 回答
35 浏览

sas - 如何在 SAS DI Studio 中创建新的转换类别?

在 SAS DI Studio 中,我不时创建自定义转换。这很有用,但所有自定义转换都显示在转换树中的“未分组”选项卡类别下。

这很笨拙,如果我可以创建新类别来将这些自定义转换分组到其中,那将会很有帮助。

那有可能吗,如果可以,怎么做?

0 投票
1 回答
436 浏览

sql-server - 从 SAS 插入到 SQL Server

我有几个数据集需要从 SAS 插入到 SQL 服务器数据库中(我的环境使用 SAS DI 4.9)。

SAS DI 附带的默认表加载器转换提供了更新/插入加载样式,并带有按 SQL 集、列或索引匹配的选项。这些都不适合我,而是抛出错误

错误:CLI 执行错误:[SAS][ODBC SQL Server 有线协议驱动程序][Microsoft SQL Server]名为“SQL_CUR608F0C44282B0000”的游标不存在。

SAS 说明表明此问题可能与 DataDirect 驱动程序的版本有关,并且有解决方法,但在我的环境中运行的 SAS 版本的解决方法会导致读取性能不佳(这不符合我的需要)。环境由 IT 管理。

我想要做的是利用 SAS DI 的自定义转换功能来构建一些东西,它的工作方式与我的设置的用户应该具有的表加载器转换方式一样。这将需要一些使用更新 + 插入方法的 SQL 传递,但是列和表名是从转换的输入和输出以编程方式确定的,并且匹配列由用户指定,与默认转换一样。

这需要一些严肃的宏观魔术。

以下是我为更新部分尝试的内容(在[方括号]中使用匿名信息):

但这因不平衡引号和引用字符串超过 262 个字符的错误而失败。

我怎样才能让它按预期工作?

编辑

这是我最终尝试使用我的 SAS 代码获取的 SQL 服务器代码,主要区别在于 SQL 代码引用了两个 SQL 服务器表,但实际上我正在尝试从 SAS 表更新:

0 投票
0 回答
19 浏览

linux - 查找具有日期限制的多种文件类型linux

我使用 SAS Grid,我正在尝试设置一个查找超过 180 天的文件的进程。我需要找到 .sas7bdat 和 .sas7bndx 文件。结果输出到 .txt 文件以在 SASDI 中进行操作

我已经能够分别找到每种文件类型,但是当我尝试多个扩展名时,我得到了错误;4

查找:路径必须在表达式之前:(-iname

我正在使用的代码是;

我已经尝试了上面的一些变体,比如删除 \ 或 ( 或更改查询的位置并获取错误的变体。

0 投票
1 回答
439 浏览

sas - 如何在 SAS 数据集成中更改列中的数据?

我有一个现有的内置 SAS 数据集成的 ETL 解决方案,其中一列最初设置为具有所有空值。我想用实际数据填充该列。该表中的原始列被设置为接收具有特定格式和格式的数值。在我更改代码之后(这是最简单的部分),我注意到该列不接受字符值(我没有收到错误,我只是注意到该列仍然具有所有 NULL 值)。任何人都可以帮忙吗?

0 投票
0 回答
216 浏览

sas - 空字符串显示为“NULL”的 SAS 数据集成问题

我遇到了 SAS DI 的问题。在某些列中,我希望空字符串显示为空,而不是显示为“NULL”。虽然它们有时显示为空,但一旦我稍后在 SQL 中运行它们,它们就会显示为“NULL”。我曾尝试在 SAS DI 中使用 NUMCHAR 变量,但我不太确定如何实现它,因为我是这种语言的新手。


编辑:

我会尝试更具体。简而言之,我在 SAS DI 中有一个工作流(Job),其中有一个表,我使用表加载器来选择一些变量(即 A、B 和 C)。上述变量既有值又有空值。在出现空值的情况下,该值的表条目被保存,尽管当我加载它时它显示为“NULL”。我想做的是更改工作流程(视觉或使用代码)以告诉 SAS DI 将列 A 和 B(但不是 C)的值显示为空(而不是“NULL”)