在复杂的生产环境中,会产生大量数据,因此从不同角度来看,不同的细节都至关重要。数据可能保存在数据库和其他 JMP 通常能够加载的资源中。这些数据显然无法全部放入一个数据表中。本次演讲中,我将展示如何根据上下文向主数据表添加额外数据。我还会举例说明如何查询包含更详细信息且与主数据表关联的其他表。
大家好,感谢观看本视频。欢迎来到我的演讲“数据驾驶舱:点击即可扩展主表数据”。首先,请允许我介绍一下我的公司——Siltronic。我们拥有四个世界一流的生产基地,4500名员工,业务遍及全球,并在硅技术领域拥有超过50年的历史。我们最初是瓦克公司的一部分,分别于1984年和1990年生产了第一片200毫米和300毫米晶圆。正如您在这里看到的,晶圆尺寸一直在不断缩小,从11纳米、7纳米、8纳米、5纳米、3纳米,到目前的2纳米。
2015年,我们以股份制公司的形式上市。目前,我们正在新加坡新建晶圆厂,并在弗莱堡新建晶体拉制车间,以扩大业务规模。在这里,您可以了解电子产品的价值链,以及价值如何从超纯多晶硅到半导体硅片不断提升。这是我们半导体和电子产品生产的关键环节,其价值提升超过1000倍。在这里,您可以了解我们的国际制造网络。在德国的弗莱堡和布格豪森,我们拥有小直径生产线、晶体拉制和晶圆加工设施,而布格豪森则是我们的中央研发中心。
我们在波特兰和新加坡都设有200毫米晶圆生产设施。此外,我们在新加坡还拥有晶体拉制设施和300毫米晶圆生产设施。新加坡的这些晶圆生产设施是世界上最新、规模最大的设施之一。领先的技术地位和高品质对我们来说同等重要。目前,我们正在研发两个纳米节点,同时优化晶圆的50多个参数,并且实现了单晶圆可追溯性。因此,我们会产生大量数据。我们的生产流程如下:从原材料——超纯硅开始,采用直拉法或浮区拉法进行晶体拉制,然后进行锭块研磨、多丝切割、边缘倒圆、激光打标、研磨、清洗和蚀刻、抛光,最后进行外延生长。简单介绍一下我自己。我是一名电气工程师,拥有电热过程模拟方向的博士学位,而我们公司正是从事这类研究。我接受过统计学教育,目前在弗莱堡硅电子公司(Siltronic Freiburg)的主要工作是开发硅晶体生长工艺。在此,我要感谢我的公司,感谢他们让我能够参加探索峰会,也能让我能够工作并与 JMP 合作,这真是太棒了。
我还负责Siltronic公司约500名用户使用JMP软件的支持工作。现在来说说这个名为“数据驾驶舱:点击即可扩展主表数据”的应用。我们遇到的问题是,一个表需要包含产品或批次等概览信息,并且需要一些图表来评估性能和其他参数。我们希望根据主表的内容和选择生成额外的表,并添加具有特定值的列。此外,我们还希望提供链接,以便向下钻取查看更详细的数据。我们发现JMP拥有出色的图形用户界面,而JMP数据表本身就是一个优秀的图形用户界面。为了解决这个问题,我们使用了大量的数据库查询,特别是新的SQL查询对象。我们利用JMP数据表作为概览和点击事件处理程序,并使用了大量的表脚本来实现启动平台、添加列、生成详细表或一键执行所有操作。因此,JSL是实现所有这些功能的理想工具。在实际应用中,我们的数据来自公司数据库。
在本演示中,我使用示例数据表“阳极键合”来模拟这一过程。实际上,驾驶舱摘要是通过查询多个不同的表而生成的。还可以从相同或其他表或数据库中添加其他表,以及JMP可用的其他数据源,例如文件、图表和视频。但在本演示中,我使用“阳极键合”表,因为其数据库查询与公司数据库的访问非常相似。在“阳极键合”数据表中,我们包含多个批次信息,每个晶圆的批次信息就是晶圆ID。对于每个晶圆,我们都有数据函数,例如以下五个变量:电荷、流量、位置、活塞力、真空度和电压,顺序如图所示。我们对每个晶圆进行评估,分为“好”或“坏”。这就是包含数据和脚本的驾驶舱界面。它包含晶圆ID、评估结果以及一些汇总数据(如您所见),并且包含许多表脚本。这里有一个链接可以深入查看。这里有一些列,其他列则分组在列组详细信息中。我们稍后会看到。我们还有一个类型为表达式的图表列。
这就是更详细的界面,现在我将切换到 JMP。这里可以看到驾驶舱,目前是空的。这里有一个脚本,可以显示我的演示文稿摘要,了解背景信息。这里我提供了一个脚本和一些文档,说明如何使用这个表格。我会详细解释。我已经将脚本分组。我们可以打开脚本组,然后点击“更新驾驶舱”按钮来获取驾驶舱的主要数据。可以看到这里列出了 30 个晶圆,以及汇总数据。
这里有一个脚本可以清除表格,我们可以重新填充数据。我们可以查看完整的数据库,这在实际应用中是不可能的。但我可以在这里打开它。这是一个 JMP 示例数据表。我们可以看到这里有 122 行数据,包含 2000 个晶圆 ID。在这个图表中,我们可以看到阳极键合示例表中的功能数据,例如电荷、流量等等。我在这里查找了一些有趣的细节数据,以便进入驾驶舱。这可能是电荷的第 43 个位置。你可以看到它在这里变化很大。或者流量的第 40 个位置,这是这里的一个特征,这个位置和活塞力。
这里,位置 30 是特征位置,真空,也就是位置 3。这可能很有意思。还有电压,位置 27 也很有趣。这里有一个列切换器,可以轻松切换变量。这就是我们使用的数据库。我把它关掉。现在我们又回到了驾驶舱,可以看看它是如何实现的。更新驾驶舱。我们编辑脚本。可以看到它非常简洁,主要使用新的 SQL 查询。就像你在这里看到的,但它不是针对数据库,而是针对 JMP 表。这就是访问 JMP 表和数据库的主要区别。我还使用了自定义 SQL 来编写查询,定义查询。你可以看到,我只筛选了一部分晶圆 ID,以便在驾驶舱中处理较小的数据量。我在这里得到了一些聚合数据,比如最大值或平均值,就像你在这里看到的。SQL 看起来有点复杂,因为我必须在自定义 SQL 字符串中转义双引号。
稍后,我们将看到一种更优雅的方法。查询运行后会更新表格,也就是驾驶舱。这里我必须关闭 JMP 数据表,因为 JMP 会打开这个表,但查询结束后不会将其关闭。这里我删除了一些查询执行时不需要的脚本。这是一个很小的脚本,使用起来很方便,也易于维护。为了清空数据表,我们可以看到我在这里做了什么。我删除了所有行。我删除了稍后会看到的图表列。我删除了稍后会出现的列组详细信息中的所有列,并删除了晶圆 ID 的属性。让我们运行所有查询。现在我们可以看到完整的驾驶舱是如何填充的。我们看到获得了一些带有图表的附加详细信息表。对于驾驶舱中的晶圆,我们获得了这些晶圆 ID 的详细信息(就像我查询的那样,一共 30 个),以及流程的详细数据。在表中,我放置了一个脚本来显示图表构建器,以便查看详细曲线。现在我可以将其关闭了。同样的道理也适用于收费。
您可以看到这里有一个链接引用,这里还有一个链接 ID。在这个图表构建器中,我可以显示控制面板,并且可以在这个详细信息表中使用它……在这个详细信息表中,我可以使用驾驶舱主表中的数据,例如这里的条件,只需链接即可,就像它就在同一个表中一样。在这里,我将其用作叠加层,用不同的颜色区分好的晶圆和坏的晶圆。这就是链接的作用。让我们浏览一下驾驶舱,看看细节。在图表下方,我们看到一个汇总图,例如晶圆 ID 上的电荷最大值,同样带有列切换器,可以查看不同的变量。如果我将鼠标悬停在某个点上,就会看到一个详细图表。这是因为我将图表作为一列添加到了数据表中,并将该列设置为标签,就像您在这里看到的那样。这就是为什么我可以在这里看到图表中的详细信息标签。也许我们可以在这里评估真空平均值是否存在差异,以及好坏晶圆之间的区别?
例如,我们可以进行单因素分析。同样,这里也提供了详细信息。这如何用脚本实现呢?它其实就是一个图表构建器。我创建了图表构建器,从中提取了脚本,然后像这样将其粘贴到表格脚本中。在这里,我们可以像这样使用所有聚合值和详细值进行预测器筛选,就像您在这里看到的那样。您可以查看哪些参数可能使条件有利或不利。具体实现方式,我们可以在这里看到。它首先查找“详细信息”列和“分组详细信息”列,如果存在则查找,如果不存在则使用聚合值调用预测器筛选。如果“详细信息”列和“分组详细信息”列存在,它还会将“分组详细信息”列添加到预测器筛选中,因此这里的这些列也会被添加到预测器筛选中。现在,我们已经了解了图表部分的内容。让我们查看更多详细信息。晶圆 ID 的详细信息。这只是一个提示,点击此处显示的晶圆 ID。点击这里,我们可以获取晶圆 ID 1971 或 1973 的详细信息。
只需生成一个新表格,该表格附带一个脚本,用于显示此图表。
这是如何实现的呢?这里使用的技术是事件处理程序。在列信息下,我们可以看到这里有事件处理程序。在事件处理程序中,JMP 已经提供了脚本框架。我编写了一个脚本来启动查询,在这个查询中,我可以使用当前所在的列和行。这里我访问的是晶圆 ID 及其对应的编号。这里我需要数据库连接。在这个 SQL 语句中,我们可以看到一种不同的字符串插入方式,无需转义这里需要的双引号。这样看起来更简洁。通过使用 Eval Insert,我将查询筛选条件(即查询条件)插入到这个查询中。我获取当前列的 ID(即我的晶圆 ID),在查询中添加筛选条件,查询完成后,我关闭数据表,删除一些脚本,并将“费用与订单”脚本添加到表中。这就是我所做的。点击此处查看表格,点击此处查看图表。我们也可以一步完成所有操作。
我们不再需要这个了。让我们看看下一个脚本。我取消选择所有列和所有行。“详细信息”显示已选行。我需要选择一些行。让我来操作一下。我按住 Ctrl 键,选择 1、3、5 行,然后显示已选行的详细信息。这样,我就得到了这三个晶圆 ID 的真空曲线,图表的不同列分别显示了“良好”或“不良”的条件。我可以进行比较。这是怎么做到的呢?您可以看到,如果我进入 JMP 主窗口,后台会创建一个阳极键合表,但它是隐藏的,我们在这里只能看到图表,也就是这个窗口。我可以双击它来查看表格。这样它就不再隐藏了。让我们看看它是如何工作的。还有一个功能是,如果我关闭图表,表格也会消失。我只能看到表格。让我们看看它是如何实现的。首先,如果没有选择任何内容,则会弹出一个窗口。如果选择了某些内容,我会编译晶圆列表字符串。这是一个包含晶圆 ID 列表的字符串,我使用替换功能将方括号替换为这里的括号。
然后,对这个列表也做同样的处理。我新建一个 SQL 查询,指向 JMP 数据表,并通过 Eval Insert 将这个晶圆列表作为条件添加到 SQL 查询中。运行完成后,重复上述步骤,然后添加一个图表生成器脚本。这个脚本在这里执行。我在这里告诉图表生成器对象,关闭时,它应该关闭数据表(阳极键合详情),并且不保存任何内容。这是一个小脚本,我认为它有一个很棒的功能,可以生成这些选定晶圆 ID 的曲线。当我关闭它时,所有内容都会再次消失。以上就是全部细节。
现在,我们来更新详细信息。正如您在这里看到的,这些是新增的详细信息列。我已经解释了这些要点的重要性,它们是通过这个脚本添加的。让我再次清空表格,并将驾驶舱更新为包含主要数据。我们从详细信息列开始运行这个脚本。您可以看到这些详细信息出现在这里。接下来我将演示它的工作原理。首先,我整理出一个列表,其中包含我需要的列名、查询所需的列名以及查询所需的筛选值。
我将每个数据集编译成一个关联数组,并创建一个关联数组列表。如果详细信息列不存在,我会创建它们,就像你在这里看到的那样。然后我遍历所有详细信息列表并创建……下一步是在所有详细信息列上创建列组详细信息。接下来是遍历所有详细信息,并为每个详细信息插入查询,就像你在这里看到的那样。同样,使用 Eval Insert,我们输入名称,并输入查询所需的值。然后是为每个详细信息列创建一个表的循环。此更新会将值添加到详细信息列中,就像我们之前看到的那样。最后,在循环内部,我当然需要关闭详细信息表。让我们再看一下它是如何工作的。我清空表,更新驾驶舱,并添加详细信息列,就像你在这里看到的那样。这不是一个很大的脚本,我认为如果你想了解它的工作原理,它很容易维护。下一个详细信息是添加真空图。
它的工作原理是这样的:我按下按钮,图表就会生成。我稍微向右滚动一下。具体操作如下:它生成列,然后暂停数据表的更新,对于每一行,我们像之前一样查询所需的详细信息,然后创建图表构建器对象,并将其保存为图片到列图表的空白区域。最后,当然要关闭图表构建器和数据表。然后设置单元格高度,以便能够看到该图表。这就是它的工作原理。
下一个细节是查询费用明细。这里会用到带有图表构建器的附加表,就像我们在这里看到的那样。这很简单。它只是像这样查找晶圆列表。然后查询明细表,向表中添加属性,添加图表构建器的脚本,并运行该脚本。此外,我在这里生成了链接 ID 和引用,以便能够使用它。我将其关闭。我将再次执行以使用此晶圆 ID。这里没有评估。
评估结果仅在此处的驾驶舱表格中显示,并且处于“条件”状态。这使我能够在详细信息中使用评估结果并绘制图表。我们再次关闭它。流程也一样。如果您不喜欢,比如说,所有窗口都显示出来,而且它们有很多窗口,所以我再次清空了表格,您可以像这里一样将所有内容移到一个项目中。我们可以为当前数据表(即驾驶舱)创建一个项目。我们可以……我们不再需要这个了。我们可以像单独使用表格一样使用它。我们可以像这样关闭左侧面板以获得全屏显示。这里的一切都以类似的方式工作。我们可以更新驾驶舱等等。创建一些详细信息时,例如费用查询详细信息,我们将在选项卡中看到它,而不是像这里看到的在不同的窗口中。我的演示到此结束。谢谢大家的关注。如果您有任何问题,请在探索峰会、用户组或脚本俱乐部与我联系。再次感谢,祝您愉快。再见。