关于表格参考的问题(来自 Russel)
这个问题出现在关于“ Re: 2022Q1 Practical Session - Beginners" - 我也想让其他人加入讨论,所以我把它放到了讨论论坛上。
关于您今天展示的表引用的问题:如果您作为脚本的一部分按顺序处理多个表,您是无限迭代表引用(dt1、dt2、dt3...)还是有更智能的解决方案?
背景:我经常操作表(连接、连接、拆分等),有时我会依次打开、处理和关闭很多表,然后在同一个脚本中移动到下一个表,直到得到我想要的最终表.
回复:关于表格参考的问题(来自 Russel)你好@Ressel ,
这真的取决于你最终想要做什么。 如果您有 100 个数据表,您想以相同的方式处理并在之后关闭,那么循环(打开、处理、关闭每个表)可能比打开所有 100 个表然后再处理一个之后做得更好另一个。 一个原因是您没有创建那么多的窗口句柄,这可能会在系统端引发另一个问题。
一般来说,我会在表变量名称中更具描述性,所以如果有意义的话,我会更好地理解它是什么。 “dt”主要用于肮脏的黑客;)
您还可以获取所有打开的数据表,然后使用
Get Data Table List();
这可能是一个聪明的举动。
其他人对此有何看法?
回复:关于表格参考的问题(来自 Russel)我同意@martindemel ,这取决于文件存在的位置、处理它们的顺序以及要对它们做什么。 JSL 在增强型日志之外有许多可以提供帮助的内置函数。 例如,目录中的文件为您提供目录中所有文件的列表。 选择文件让您以交互方式从目录中选择一个或多个文件。 虽然增强型日志在捕获交互操作方面做得很好,但您仍然希望将硬编码的表名引用替换为对表的变量引用。 @martindemel展示了其中的一些使用dt = 打开(... 在大多数情况下,打开文件的 JSL 操作将返回创建的数据表的句柄。 当您使用来自表菜单。 例如,如果您正在创建一个子集,则语法
subsetDT = dt << Subset(...
将让您捕获对新创建的表的引用。 其他表操作以类似的方式工作。
回复:关于表格参考的问题(来自 Russel)感谢您的回复。 关于我正在使用的背景的更多信息。
我通过 ODBC 从我们的 Google Cloud Platform 实现中加载表。 这些表格会定期更新最新的制造数据。 例如,我加载的第一个表(我将其引用为dt ) 在不同的列中具有批次 ID、不同 QC 参数的参数名称、测量结果和测量单位。 我按 QC 参数名称拆分它(并将输出引用为dt2 , 关闭dt )。 然后,例如,我加载另一个表,该表交叉引用具有制造位置的批次 ID(我将其引用为dt3 )。 之后我可以加入dt2和dt3 , 创建dt4依此类推,直到我有一个表格,其中包含我认为在进行任何分析之前需要的所有信息。 在一些脚本中,我正在处理近 10 个表,所有表都被引用为dt(n) . 这是我目前的技能水平所允许的。
我有一个中期计划,将这样的脚本用于控制图表。 目前我只是直观地评估趋势并将屏幕截图或 html 导出的图表发送给不同的利益相关者。
我从这次谈话中得到的是使用更具描述性的表格引用。 这些也是所谓的句柄?
回复:关于表格参考的问题(来自 Russel)描述性句柄/参考名称将在某些时候帮助您(或其他必须修改您的代码的人)。 当您可以使用 Show(dt_batchid_loc); 时,这也使调试打印更容易。例如查看创建的表名。
在创建表时使用输出表(“表名”)也可能很有用。 如果您(当您)必须调试代码时,这将对您有所帮助。 如果你不这样做(我倾向于跳过这个,它会时不时地困扰着我),与 QC 的“Untitled 3041 summary”相比,从“BatchID_with_Loc”之类的名称中查看哪个表打开要容易得多, Loc”什么的。
回复:关于表格参考的问题(来自 Russel)也有可能在数据库中进行表操作(例如查询生成器或本地 SQL 中的查询定义)。 这对于大型数据集是有利的,因为您可以避免流量并将重负载放到服务器上。 然后,您还需要在 JMP 中处理较少的表。
回复:关于表格参考的问题(来自 Russel)我之前尝试过使用查询生成器。 它非常缓慢,并且不断崩溃。 所以我联系了 SAS 技术支持,但他们无法解决问题。 结果,我坚持在脚本中处理单个表,其中;考虑到查询构建器的糟糕表现;更加方便和高效。 这可能是因为我正在加载的表有大约 100 000 多行 - 这至少是技术支持的结论。 唉,除了这些“巨大”的桌子,我几乎无处可去。
另外,我认为我需要紧急熟悉调试。 虽然我设法“争吵”了几行有用的代码,但我并没有考虑架构、美学或;事实上;如何构建可以调试的脚本。 不幸的是,这对我来说仍然是一个陌生的概念。