我一直在努力了解SAS库/文件夹如何存储在物理位置。我试图在管理层面理解这个概念。
为了更多地解释我的困惑,我想一步一步地去 -
(1)SAS代码在客户端运行。任何变量/库/数据集都在元数据层上有定义,这意味着元数据层包含指向物理地址的逻辑地址,我们可以在计算层上找到它,而计算层则在Linux系统上。如何找到逻辑和物理地址之间的映射。或如何在SAS Management Console或Linux中跟踪变量/库/数据集。
(2)SAS客户端 - > SAS服务器 - >数据库。因此,当我们从数据库访问任何表时,它首先被转换为SAS表。如果我对这个逻辑是对的,那么应该有一些保存这些SAS表的物理位置。如何在Compute Tier上找到这些物理位置。
(3)如果我作为用户创建SAS数据集,那么它将保存哪种格式以及在哪里?它是在Linux上保存为平面文件还是在某些数据库中保存为表格?
(4)我经历了这个问题,又出现了一个混乱
Proc SQL: How / When does SAS Move the Data
将任何数据表从数据库服务器加载到SAS服务器时。它是否存在于整个会话中,或者每次调用该表时,都会触发数据库。
我对SAS的理解可能有误,所以请尽可能纠正我。
谢谢
答案 0 :(得分:0)
关于Q2& 3)是和否关于转换的数据库。当您读取数据库时,根据您的查询,SAS会将查询传递给数据库,然后将结果下载到SAS。如果结果是表,则它取决于用户指定要保存的位置。对于与Q3的链接,我们假设它进入WORK库。这是服务器上的临时/临时空间,但在SAS中。它存在于SAS会话中,当会话关闭时,它被清除。 WORK文件夹中的数据集以SAS7BDAT专有SAS格式存储。 工作库本质上是目录中的文件夹,而不是数据库中的文件夹。
如果由于某种原因无法将查询传递给DB,则函数不是有效的数据库函数,或者它与工作库中的SAS数据集连接,服务器中的整个表首先导入SAS会话然后执行查询。这可能非常有效,因此用户可以了解其工作原理。
答案 1 :(得分:0)
<强> Q1:强> 如果在数据集上运行PROC DATASETS,您将在文件名字段中找到它的位置。如果在SAS EG中运行DATA SET ATTRIBUTES任务,则可以实现相同的目的。
<强> Q2:强> 正如Reeza所提到的,DB直接可以处理很多查询。 SAS非常支持SQL,Oracle和许多其他不需要中间数据集的数据库。
<强> Q3:强>
如果您在会话中创建全新格式并且未指定存储位置,则它将作为SAS CATALOG存储在WORK库中。您可以通过运行此程序来检查该目录的内容:PROC CATALOG CATALOG=WORK.FORMATS;contents;RUN;
通常,默认和永久格式存储在其他位置。您需要检索FMTSEARCH选项的内容,以检查为会话加载的位置。搜索这些位置从左到右所需的格式。用于检查选项的代码:PROC OPTIONS option=FMTSEARCH; RUN;
<强> Q4:强> 问题实际上是关于SQL Procedure Pass-Through Facility。您可能会发现this technical document很有用。还有很多其他有用的论文,但用一句话回答你的具体问题:是的,数据库一直受到攻击。如果要避免它,请创建一个隔夜ETL过程并将数据库复制到SAS进行日间处理,但将格式良好的SQL查询发送到数据库进行处理(利用SQL传递工具)可能更有用。
此致 瓦西里