关于表格参考文献的问题(来自拉塞尔)
这个问题出现在关于“回复:2022Q1 实践课程 - 初学者” - 我也希望其他人也加入讨论,所以我将其放入讨论论坛。
关于您今天展示的表引用的问题:如果您作为脚本的一部分顺序处理多个表,您是否会无限地迭代表引用(dt1、dt2、dt3,...)或者是否有更智能的解决方案?
背景:我经常操作表(连接、连接、拆分等),有时会按顺序打开、处理和关闭相当多的表,然后再转到同一脚本中的下一个表,直到获得我想要的最终表。
回复:关于表格参考文献的问题(来自拉塞尔)@乔治谢谢你!
回复:关于表格参考文献的问题(来自拉塞尔)你好@雷塞尔,它不包含有关创建/编写 SQL 的信息,而是包含有关通过 SQL 查询或不同方式在 JMP 中部署查询的更多信息。 因此,我通常的方法是使用不同的工具来编写普通 SQL(例如“从年龄 > 15 的 big_class 中选择名称”),然后在 JMP 中简单地部署该脚本。 但您会看到几个示例。
回复:关于表格参考文献的问题(来自拉塞尔)你好,是的,很多设置都被更改了,尽管我记不清是哪些设置了。 我的意思是,这由 SAS 技术支持、我们和我的 IT 支持负责。 我们花费了大量的时间来尝试解决这个问题。 但没有什么帮助。 (我最近开始变得有一定的数据素养。)
另外,我对通过脚本加载数据并操作表来获取数据没有任何问题,尽管它确实显得效率低下,因为我每次加载 100 000 行,删除大部分行,并对下一个表重复类似的步骤。 我想查询生成器可能会做同样的工作,但在不同的界面上? 目前我可以访问我需要的数据,但是;取决于工作量;我可能会考虑将纯 SQL 导入到 JMP 中。 (不知道这是可能的。)
下面的链接包含有关创建用于 JMP 或在 JMP 中使用的 SQL 的信息?
谢谢!
回复:关于表格参考文献的问题(来自拉塞尔)顺便说一句,也许您想看看这个演示文稿,它都是关于使用 JMP 从数据库获取数据:
https://community.jmp.com/t5/Discovery-Summit-Europe-2021/Strategies-and-Examples-for-Data-Acquisition-From-Distributed/ta-p/349225
回复:关于表格参考文献的问题(来自拉塞尔)您是否尝试更改查询生成器首选项中的设置? 这可能会发生很大的变化,默认情况下,每次更改都会传输大量数据(数据库的所有级别、预览等)。
此外,一旦通过 GUI 进行查询,您就可以将其转换为自定义 SQL 以创建纯 SQL。 然后将仅在数据库中进行处理并且速度要快得多。
我最著名的方法总是在数据库上做繁重的工作,但这总是取决于环境。 还有其他工具可让您在数据库中定义查询,您可以在 JMP 中使用这些工具(例如 SQL 查询生成器,具体取决于您的数据库供应商)。
您还可以请您的 IT 人员(例如数据库管理员)帮助您处理定期需要的某些查询,并将纯 SQL 导入到 JMP 中。
以正确的格式从数据库中获取数据至关重要,最后值得查看完整的过程。
回复:关于表格参考文献的问题(来自拉塞尔)我之前尝试过使用查询生成器。 它非常慢并且不断崩溃。 于是我联系了SAS技术支持,但他们无法解决问题。 因此,我坚持在脚本中处理各个表,其中;鉴于查询生成器的性能不佳;更加方便和高效。 这可能是因为我正在加载的表有大约 100 000 多行 - 这至少是技术支持的结论。 唉,除了这些“巨大”的桌子之外,我几乎没有其他地方可以求助。
另外,我认为我需要紧急熟悉调试。 虽然我设法“争论”了一些有用的代码行,但我没有考虑架构、美学或;事实上;如何构建可调试的脚本。 不幸的是,它对我来说仍然是一个陌生的概念。
回复:关于表格参考文献的问题(来自拉塞尔)还可以在数据库中进行表操作(通过查询生成器或本机 SQL 等进行查询定义)。 这对于大型数据集是有利的,因为您可以避免流量并给服务器带来沉重的负载。 那么你还需要在JMP中处理更少的表。
回复:关于表格参考文献的问题(来自拉塞尔)描述性句柄/引用名称将在某些时候为您(或必须修改您的代码的其他人)提供帮助。 当您可以使用 Show(dt_batchid_loc); 时,这也使调试打印变得更容易。例如查看创建的表名称。
此外,在创建表时使用输出表(“表名称”)可能很有用。 如果您(当您)必须调试代码时,这将对您有所帮助。 如果你不这样做(我倾向于跳过这一点,它时不时地困扰着我),与“QC 的 Untitled 3041 摘要”相比,从“BatchID_with_Loc”之类的名称中查看哪个表打开要容易得多,Loc”什么的。
回复:关于表格参考文献的问题(来自拉塞尔)感谢您的回复。 更多关于我正在工作的背景。
我通过 ODBC 从 Google Cloud Platform 实现加载表。 该表定期根据最新的制造数据进行更新。 例如,我加载的第一个表(我将其引用为dt )在单独的列中具有批次 ID、不同 QC 参数的参数名称、测量结果和测量单位。 我按 QC 参数名称拆分它(并将输出引用为dt2 , 关闭dt )。 然后,例如,我加载另一个表,该表交叉引用批次 ID 与制造地点(我将其引用为dt3 )。 之后我可以加入dt2和dt3 , 创造dt4依此类推,直到我有一个表格,其中包含我认为在继续进行任何分析之前需要的所有信息。 在某些脚本中,我正在处理接近 10 个表,所有表都引用为dt(n) 。 这是我目前的技术水平所允许的。
我有一个中期计划,使用这样的脚本来绘制控制图。 目前,我仅以视觉方式评估趋势,并将屏幕截图或 html 导出图表发送给不同的利益相关者。
我从这次谈话中学到的是使用更具描述性的表格参考。 这些也是所谓的句柄吗?
回复:关于表格参考文献的问题(来自拉塞尔)我同意@马丁德梅尔,这取决于文件存在的位置、处理它们的顺序以及您想要对它们执行的操作。 JSL 在增强日志之外还有许多可以提供帮助的内置功能。 例如,目录中的文件为您提供目录中所有文件的列表。 选择文件允许您以交互方式从目录中选择一个或多个文件。 虽然增强日志可以很好地捕获交互操作,但您仍然希望将硬编码的表名称引用替换为对表的变量引用。 @马丁德梅尔展示了其中一些使用dt = 打开(... 在大多数情况下,打开文件的 JSL 操作将返回所创建的数据表的句柄。 当您向表发送来自以下操作的消息时,也会创建数据表句柄:表格菜单。 例如,如果您要创建子集,则语法
subsetDT = dt << Subset(...
将使您捕获对新创建的表的引用。 其他表操作以类似的方式工作。
回复:关于表格参考文献的问题(来自拉塞尔)你好@雷塞尔,
这实际上取决于你最终想做什么。 如果您有 100 个数据表,您想要以相同的方式处理并在之后关闭,那么循环(打开、处理、关闭每个表)可能会比打开所有 100 个表然后再处理它更好另一个。 原因之一是您没有创建那么多窗口句柄,这可能会在系统方面引发另一个问题。
一般来说,我会在表变量名称中更具描述性,因此我可以更好地理解它是什么(如果有意义的话)。 “dt”主要用于肮脏的黑客;)
您还可以获取所有打开的数据表,然后使用循环遍历它们
Get Data Table List();
这可能是一个明智之举。
其他人对此有何看法?