1

我想知道如何有效地管理 SAS 中的格式,以用于从各种来源获取数据的报告办公室,其中一些具有适当的查找表/元数据,而另一些则没有。

对于具有适当元数据的数据源,为值描述加入表可以正常工作,但是当元数据不存在并且需要单独维护时,应该怎么做呢?一些简单的例子/想法:

  • 带有单独维护的本机步骤的普通.sas文件。PROC FORMAT
  • 单独维护并导入 SAS 以创建格式库的外部文件(例如 Excel、CSV)。
  • 单独维护的数据库表可以从中读取以创建格式库。

除了格式化值之外,管理值更改(即,某些值的生效日期)也是一个问题。

非常感谢对适用于此类任务的约定或标准的任何帮助。

4

1 回答 1

1

我不确定这里是否有单一的最佳解决方案——这在很大程度上取决于您的环境、您的用户等。

如果您有相当天真的用户,那么如果可能的话,我肯定会推荐一个完整的存储库;如果您使用单个 SAS 版本/操作系统/位,则无论是 .sas7bcat 文件,还是要输入 PROC FORMAT 的现成表/数据集(以及它们的 autoexec 中包含的 .sas 文件来执行导入)。这样做的最大缺点是您必须主动管理它(例如,您不能允许用户将自己的格式写入主格式数据集,因为他们可能会覆盖其他格式),并且将有额外的工作来确保格式名称不冲突 -YNF.可能是1=YES 2=NO1=YES 0=NO或其他东西。这也不允许您非常轻松地处理生效日期;但这可能对您的用户更好(然后单独处理文档)。

如果您有更高级的用户,那么您可能会考虑使用更具关系性的表/数据集。混合方法可能包括带有列的数据集:

  1. 数据集名称(根据需要限定以确保唯一性)
  2. 格式名称
  3. 开始
  4. 标签
  5. 其他元素(类型、HLO 等)
  6. 生效日期

这将允许用户进行自己的修改(假设您足够信任他们可以正确添加数据集名称,无论如何 - 或设置存储过程以从检查冲突的临时表中进行添加)并允许您处理格式名称矛盾的。如果有必要,您仍然必须有一种方法让用户处理使用多个数据集(例如,默认情况下向格式名称添加一些唯一元素,如“数据集 ID”)。

然而,在我看来,最好的选择是使用数据字典来处理元数据,它将自文档与元数据管理相结合。与上面类似,您有一个包含数据集和格式元素的表,但根据您的用例添加描述性文本(例如问题描述)和其他有用信息的列。这可以保存在数据库表或数据集中,或者更有用的是可以与非程序员共享并易于编辑的 excel 或类似文档。我在几个项目中使用了这种方法,并且通过允许我的用户帮助为我的代码编写文档,使我的程序保持准确和最新,同时最大限度地减少更新的来回讨论,它得到了回报。每次运行数据时,我只需导入电子表格并运行 proc 格式。

然后,您可以为每个数据集创建一个电子表格、一个选项卡或一个包含所有数据集的完整电子表格 - 以最容易使用的为准。这也很容易处理“生效日期”类型的问题——甚至是版本控制,因为这可以在电子表格中处理。

于 2013-09-05T18:00:51.663 回答