CN116149523A - 笔记本和管线的自动双向生成和同步 - Google Patents
笔记本和管线的自动双向生成和同步 Download PDFInfo
- Publication number
- CN116149523A CN116149523A CN202211446563.4A CN202211446563A CN116149523A CN 116149523 A CN116149523 A CN 116149523A CN 202211446563 A CN202211446563 A CN 202211446563A CN 116149523 A CN116149523 A CN 116149523A
- Authority
- CN
- China
- Prior art keywords
- pipeline
- notebook
- paragraph
- node
- new
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04812—Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04815—Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or object
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04817—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及笔记本和管线的自动双向生成和同步。描述了与笔记本和管线的自动双向生成和同步相关联的系统、方法和其它实施例。在一个实施例中,一种计算机实现的方法包括:识别应用逻辑的管线表示与笔记本表示之间的差异,其中差异是以下中的一者:(i)没有对应管线节点的笔记本段落和(ii)没有对应笔记本段落的管线节点;通过以下操作来同步管线表示与笔记本表示:对于没有对应管线节点的笔记本段落,在管线表示中自动生成新管线节点,并且对于没有对应笔记本段落的管线节点,在笔记本表示中自动生成新笔记本段落;以及或者更新管线用户界面以示出新管线节点或者更新笔记本用户界面以示出新笔记本段落。
Description
相关申请的交叉引用
本公开要求于2021年11月19日提交的标题为“Automatic Two-Way Generationand Synchronization of Notebook and Pipeline”的印度临时专利申请序列号202121053246,发明人为Rajaram N.Vadapandeshwara、Tara Kant和Farsana K,并转让给本受让人,其全部内容通过引用并入本文。
背景技术
笔记本界面或计算笔记本,诸如Data Studio、Jupyter、Zeppelin、Google Notebook Service和SageMaker Notebook,允许数据科学家和建模者编写统计和机器学习(ML)模型的脚本以用于预测用例。笔记本界面也越来越多地用于脚本确定性计算。
随着笔记本的普及,业务领域的用户正在与笔记本中编写脚本的底层业务逻辑脱节。由于使用笔记本进行开发而导致的可审计性、解释能力和监管监督便利性的丧失是统计和机器学习分析虽然成为主流但仍处于监管批准边缘的原因。
发明内容
在一些方面,计算机实现的方法可以包括:识别应用逻辑的管线表示与笔记本表示之间的差异,其中差异是以下中的一者:(i)没有对应管线节点的笔记本段落和(ii)没有对应笔记本段落的管线节点;通过以下操作来同步管线表示与笔记本表示,对于没有对应管线节点的笔记本段落,在管线表示中自动生成新管线节点,以及对于没有对应笔记本段落的管线节点,在笔记本表示中自动生成新笔记本段落;以及或者更新管线用户界面以示出新管线节点或者更新笔记本用户界面以示出新笔记本段落。
附图说明
结合在本说明书中并构成其一部分的附图图示了本公开的各种系统、方法和其它实施例。将认识到的是,图中所图示的元素边界(例如,框、框的组,或者其它形状)表示边界的一个实施例。在一些实施例中,一个元素可以被实现为多个元素,或者多个元素可以被实现为一个元素。在一些实施例中,示为另一个元素的内部组份的元素可以被实现为外部组份,并且反之亦然。此外,元素可能不是按比例绘制的。
图1图示了与笔记本和管线的自动双向生成和同步相关联的系统的一个实施例。
图2图示了和与笔记本和管线的自动双向生成和同步相关联的应用逻辑相关的笔记本和管线界面的一个实施例的概念图。
图3图示了用于笔记本和管线的自动双向生成和同步的系统组件的一个实施例。
图4图示了与笔记本和管线的自动双向生成和同步相关联的方法的一个实施例。
图5图示了与笔记本和管线的自动双向生成和同步相关联的方法的另一个实施例。
图6图示了用于链接与笔记本和管线的自动双向生成和同步相关联的新管线节点的方法的一个实施例。
图7图示了与笔记本和管线的自动双向生成和同步相关联的管线图形用户界面的一个实施例。
图8图示了配置有所公开的示例系统和/或方法的计算系统的实施例。
具体实施方式
使用计算机建模(统计和ML)面临的挑战很多。监管机构不会轻易接受使用建模(包括ML建模)或数据科学算法得出的结果、决定、数字、文件,至少部分原因是笔记本对业务/域用户缺乏透明度。业务/域用户通常无法验证、核实和拥有包括模型或数据科学驱动程序的应用逻辑。业务/域用户的优选界面(管线)与数据科学家用户的优选界面(笔记本)之间的脱节使业务/域用户和数据科学家/建模者之间的协作“配置”方法能够增强基于规则的计算解决方案基于模型的逻辑实际上是不可能的。没有可互换的范式支持可视化设计过程(如在管线界面中)和脚本过程(如在笔记本界面中)。
本文描述的用于笔记本和管线的自动双向生成和同步的系统、方法和其它实施例克服了这些和其它挑战。本文描述了提供笔记本与管线以及管线与笔记本的自动生成和同步的系统、方法和其它实施例。特别地,该系统、方法和其它实施例允许:(i)响应于用户输入对笔记本代码的改变而自动生成或修改业务流程管线;以及(ii)响应于用户输入对管线的改变而自动生成或修改笔记本代码。在笔记本中开发的统计和ML操作可以作为业务用户容易理解的管线视图中的对象呈现给业务域用户,并且对管线的改变导致笔记本代码与用户对管线的编辑一起自动扩充(代码生成)。系统、方法和其它实施例还允许业务用户和域专家以声明方式设计业务逻辑,并且在后台自动生成笔记本代码。这使数据科学家能够与域分析者协作,以端到端地微调业务逻辑/流程。由业务/域分析者在管线视图中或由建模者/数据科学家在笔记本视图中所做的任何改变都可以立即被使用另一个视图的另一个人看到。因此,管线流和笔记本不会彼此不同步。因此,在一个实施例中,如本文所述的笔记本和管线的自动双向生成和同步提供了低代码/无代码数据科学平台。
在笔记本和管线的自动双向生成和同步的实施例的一项早期测试中,生成和同步能力被证明是非常有效的。测试系统成功地将10,000多行笔记本代码转换成管线流,每个段落都映射到管线中的对应任务作为命名对象,并且笔记本段落代码作为任务中的嵌入式业务逻辑,可作为REST API调用。因此,在笔记本中作为曾难以破译的大量代码变成了可视化可审计的管线,并且端到端过程可调试了、可交互监视,并且在监管监督方面可解释。
本文描述或要求保护的任何动作或功能均不是由人脑执行的。任何动作或功能可以在人脑中执行的解释与本公开内容不一致和相反。
—示例环境—
图1图示了与笔记本和管线的自动双向生成和同步相关联的系统100的一个实施例。在一个实施例中,系统100包括云基础设施系统105,诸如通过互联网110(或另一个合适的通信网络或网络的组合)连接到企业网络115的云基础设施。
在一个实施例中,云基础设施系统105包括各种系统和组件,这些系统和组件包括数据集成和建模服务120、其它系统组件125、(一个或多个)数据存储库130和web接口服务器135。
在一个实施例中,数据集成和建模服务120可以包括Oracle金融服务的模型管理和治理(MMG)工具的组件,用于开发、部署和管理统计、机器学习、计算和模拟模型。在一个实施例中,其它系统组件125可以包括云服务,这些云服务可以由数据集成和建模服务120组合以构建和运行专用计算应用,诸如统计、机器学习、计算和模拟模型。在一个实施例中,其它系统组件125还可以包括用户管理模块,用于治理用户对云基础设施系统105的访问。
云基础设施系统105的每个组件由逻辑配置以执行该组件被描述为执行的功能。在一个实施例中,云基础设施系统的组件可以被实现为由一个或多个专门配置用于这种执行的计算设备执行的一个或多个软件模块的集合。在一个实施例中,云基础设施系统105的组件在通过数据网络互连的一个或多个硬件计算设备或主机上实现。例如,云基础设施系统105的组件可以由一种或多种计算硬件形状(诸如中央处理单元(CPU)或通用形状、密集输入/输出(I/O)形状、图形处理单元(GPU)形状和高性能计算(HPC)形状)的网络连接的计算设备执行。在一个实施例中,云基础设施系统105的组件由专用计算设备实现。在一个实施例中,云基础设施系统105的组件由公共(或共享)计算设备实现,尽管在图1中表示为离散单元。在一个实施例中,云基础设施系统105可以由专门的第三方托管,例如在基础设施即服务(IAAS)、平台即服务(PAAS)或软件即服务(SAAS)体系架构中。
在一个实施例中,系统100的组件通过电子消息或信号相互通信。这些电子消息或信号可以被配置为对访问组件的特征或数据的功能或过程的调用,诸如例如应用编程接口(API)调用。在一个实施例中,这些电子消息或信号以与传输控制协议/互联网协议(TCP/IP)或其它计算机网络协议兼容的格式在主机之间发送。系统100的每个组件可以(i)生成或编写电子消息或信号以向另一个组件发出命令或请求,(ii)将消息或信号传输到计算系统100的其它组件,(iii)解析接收到的电子消息或信号,以识别组件可以执行的命令或请求,以及(iv)响应于识别命令或请求,自动执行或执行命令或请求。电子消息或信号可以包括对数据库的查询。查询可以以与数据库兼容的查询语言组成和执行,并在与查询语言兼容的运行时环境中执行。
在一个实施例中,远程计算系统(诸如企业网络115的那些)可以通过web接口服务器135访问由云基础设施系统105提供的信息或应用。在一个实施例中,远程计算系统可以向web接口服务器135发送请求并从其接收响应。在一个示例中,可以通过使用个人计算机145、远程用户计算机155或移动设备160上的web浏览器来实现对信息或应用的访问。例如,企业网络115的这些计算设备145、155、160可以访问用于开发应用逻辑的笔记本图形用户界面(GUI)(也称为数据工作室)或管线GUI(也称为画布)。在一个示例中,可以在web接口服务器135和个人计算机145、服务器150、远程用户计算机155或移动设备160之间交换通信,并且可以采用例如使用JavaScript对象表示法(JSON)作为数据交换格式的远程代表性状态转移(REST)请求、或与XML服务器来往的简单对象访问协议(SOAP)请求的形式。REST或SOAP请求可以包括对云基础设施系统105的组件的API调用。例如,企业网络115的计算机145、150、155可以通过笔记本界面请求创建或删除笔记本段落,或者通过管线界面请求创建或删除管线节点。
企业网络115可以与企业相关联。为了解释的简单和清楚起见,企业网络115由现场局域网140表示,一个或多个个人计算机145或服务器150可操作地连接到该现场局域网140,连同一个或多个远程用户计算机155或移动设备160通过(一个或多个)网络110连接到企业网络115。每个个人计算机145、远程用户计算机155或移动设备160一般专用于特定的最终用户,诸如与企业相关联的员工或承包商,尽管不需要这种专用性。个人计算机145和远程用户计算机155可以是例如台式计算机、膝上型计算机、平板计算机或具有连接到局域网140或互联网110的能力的其它设备。移动设备160可以是例如智能电话、平板计算机、移动电话或其它能够通过无线网络连接到局域网140或(一个或多个)网络110(诸如蜂窝电话网络或Wi-Fi)的设备。企业网络115的用户跨(一个或多个)网络110与云基础设施系统105接口。
在一个实施例中,数据存储库130是用于非暂态计算机可读介质中的一个或多个信息或数据集合的结构化的存储和检索的计算堆栈,例如作为一个或多个数据结构。在一个实施例中,数据存储库130包括被配置为存储和提供由云基础设施系统105使用的信息的一个或多个数据库。在一个实施例中,数据存储库130包括被配置为存储和提供计算笔记本的一个或多个笔记本数据库,例如作为Jupyter格式的数据结构。在一个实施例中,数据存储库130包括被配置为存储和提供定义离散任务的有序执行的信息的一个或多个管线数据库,例如作为元数据的图数据结构,将任务描述为节点并将次序描述为图的链接。在一个实施例中,数据存储库130包括被配置为存储和提供笔记本和管线数据结构的一个或多个数据库。在一些示例配置中,(一个或多个)数据存储库130可以使用一个或多个Exadata计算形状、网络附加存储(NAS)设备和/或其它专用服务器设备来实现。
在一个实施例中,数据集成和建模服务是由Oracle金融服务(Oracle FinancialServices)提供的模型管理和治理应用。在一个实施例中,数据集成和建模服务120包括一个或多个组件,被配置用于实现与笔记本和管线的自动双向生成和同步相关联的本文所述的方法、功能和其它实施例。在一个实施例中,数据集成和建模服务120被配置有逻辑(诸如参考图8所示和描述的自动双向笔记本和管线生成和同步逻辑830)以实现本文所述的方法、功能和其它实施例。例如,数据集成和建模服务120可以包括管线界面子系统165、笔记本界面子系统175和管线-笔记本同步器子系统180。在一个实施例中,管线界面子系统165维护将应用逻辑表示为按执行次序链接的任务节点的集合的一个或多个管线,执行管线(或管线片段),并通过画布风格的图形用户界面呈现管线以供用户查看和编辑,如本文进一步详细显示和描述的。在一个实施例中,笔记本界面子系统维护将应用逻辑表示为包括可执行代码或脚本的笔记本段落的集合的一个或多个笔记本,执行笔记本(或单独的笔记本段落),并通过笔记本风格的图形用户界面呈现笔记本以供用户查看和编辑。在一个实施例中,管线-笔记本同步器子系统180使得对应用逻辑的笔记本表示做出的改变被呈现在应用逻辑的管线表示中,并且使得对应用逻辑的管线表示做出的改变被呈现在应用逻辑的笔记本表示中,从而确保笔记本和管线表示之间的自动、实时、双向同步。
—对于应用逻辑的笔记本和管线界面—
图2图示了笔记本和管线界面的一个实施例的概念图200,其和与笔记本和管线的自动双向生成和同步相关联的应用逻辑有关。在一个实施例中,根据分析者205的偏好,有两个界面用于查看和编辑分析者(或用户)205可用的应用逻辑。
一个界面,管线界面210(也称为画布),针对作为业务分析者或域分析者(即,奋斗领域的专家)的分析者205,并提供底层应用逻辑215的可视管线表示。在一个实施例中,管线表示将应用显示为有向图,其中节点表示细粒度的任务或功能,其由指示任务节点的输入和输出的链接来连接。这种可视管线表示可以隐藏任务的许多操作细节,以便提供应用逻辑的视觉上整洁的表示,并且可以通过选择节点和链接来使得能够查看和编辑底层操作细节。管线界面210因此提供了低代码(或无代码)数据科学平台。管线界面210主要是为非技术分析者呈现的,因此分析者可以查看每个对象,并直观地看到它是用于特定类型的数据处理,诸如数据摄取、数据剖析等。
另一个界面,笔记本界面220(也称为数据工作室或规则或模型创作界面),针对作为数据科学家或建模者的分析者205,并提供底层应用逻辑215的计算笔记本表示。在一个实施例中,笔记本表示将应用显示为笔记本草稿222中的一系列段落221,也称为单元(cell)。段落221表示以计算机可执行代码或脚本中编写的细粒度任务或功能。笔记本表示显示任务的可执行代码(本文也称为功能脚本),以便提供应用逻辑的完整表示,并允许直接编辑。在一个实施例中,除了可执行代码段落之外,笔记本中还可以包括其它类型的段落,诸如结果、格式化、图形或不可执行的文本段落,从而提供在统一的文档中呈现代码、结果、可视化和文档的交互环境。
在一个实施例中,笔记本界面220包括用于执行段落中的代码的内核。笔记本段落中的代码可以用多种解释语言编写。笔记本可以是多语言的,其中的段落用不同的语言编写。内核包括这些语言的解释器。例如,语言可以包括Java、Scala、R、Python、PySpark、JavaScript、结构化查询语言(SQL)和属性图查询语言(PGQL)。内核还可以包括特定于应用的内容的解释器,诸如Oracle金融服务分析应用(OFSAA)命令的解释器。在该段落中,代码以调用魔法函数(magic function)开始——魔法函数是内核中执行所提供的命令的预定义函数——它为代码选择解释器。例如,段落开头处的“%ofsaa”魔法指示该段落的后续内容应由OFSAA解释器解释;“%pgql”魔法指示该段落的后续内容应由PGQL解释器解释,并且“%python”魔法指示应由Python解释器解释的内容。响应于这些选择解释器的魔法命令,笔记本内核还提供执行段落内容的环境。例如,对于Python脚本,内核将生成python会话来执行脚本;对于PGQL查询,内核将请求在属性图服务器(PGX)会话中执行代码;并且对于SQL查询,内核将请求与SQL服务器的Java数据库连接性(JDBC)连接以执行命令。
因此,在一个实施例中,笔记本界面220支持用于高级用户(诸如,数据科学家)的脚本编写,而管线界面210呈现将代码(或脚本)表示为一系列细粒度任务的反向生成的可视管线。本文描述的用于笔记本和管线的自动双向生成和同步的系统、方法和其它实施例可以从管线自动生成代码(诸如笔记本段落),并且可以从代码自动生成管线,并且可以保持画布中的管线和笔记本中的模型代码同步。利用本文描述的用于笔记本和管线的自动双向生成和同步的系统、方法和其它实施例,使得两个界面210、220能够实时协作地使用,以开发应用逻辑215。在一个实施例中,管线界面的特征由管线界面子系统165实现,并且笔记本界面220的特征由笔记本界面子系统175实现。
在一个实施例中,建模元存储和注册储存库225是数据结构,诸如包括定义管线的信息的图数据库。储存库215可以包括定义管线中节点之间的连接(或链接或边)的信息,诸如边和节点的目录表。储存库215可以包括描述管线节点的内容的信息,诸如节点的任务类型,以及到定义节点的功能性的笔记本段落的链接(诸如API调用)。在一个实施例中,建模元存储和注册储存库225是数据存储库130中的数据库数据结构。
在一个实施例中,笔记本是可以经历持续修订的草稿。通过执行笔记本界面220的“发布”功能,可以将笔记本的当前草稿222存储为笔记本的固定、静态或只读副本230。对草稿笔记本222的后续改变不会修改静态副本230。
在一个实施例中,应用逻辑215被存储为一个或多个数据结构,该数据结构表示储存库225中的笔记本的管线或段落的节点和链接。应用逻辑215基于管线链接和管线节点定义任务(诸如模型和其它功能)输入和输出,以及对描述在草稿笔记本222或静态副本230中定义的管线节点的功能的段落的应用编程接口(API)调用(诸如REST API调用)。分析者205可以在执行之前选择草稿222或静态230版本。应用逻辑215由计算系统执行235或进行。应用逻辑215可以在不同的上下文中执行,诸如在ML模型训练中,其中ML模型被包括在应用逻辑215中,测试和实验以评估应用逻辑215的性能,或者应用逻辑215在生产数据上操作的生产。应用逻辑215的执行240的结果可以被写到存储装置240,例如作为数据存储库130中的数据结构,被输出或发送到使用输出结果的另一个应用245,或者在图形用户界面(GUI)250中被呈现给分析者205用于进行决策或可视化输出结果。在一个实施例中,存在为管线创建的端点(诸如REST API),其可以接受对管线的输入并提供来自管线的结果,并且输出245通过这些端点被发送。一个示例其它应用是用于在线监视模型性能的应用,当它检测到当前模型性能与初始性能相比有显著漂移时,它发出警报,响应于警报而提供反馈和/或发起重新调谐过程。在一个实施例中,可以在实况操作期间收集输出结果或从存储装置240检索输出结果以通过可视化GUI 250呈现。示例模型逻辑215可由触发器255执行。触发器255可以响应于来自另一个应用的调用。触发器255可以响应于被调度的操作,例如,可以在管线界面210中向用户呈现允许用户调度管线的执行(例如,每天、每月、在一个特定时间等)的菜单。被调度的执行可以在管线级别执行或者针对包括一个或多个节点的管线的子部分执行,并且管线的不同部分的执行可以服从不同的调度,例如调度以每天运行评分工作流,并每月运行再训练节点。触发器255可以响应于模型逻辑215(或其组件)通过用户205与管线界面(画布)210交互的交互式发起,诸如用户选择管线界面210中的执行按钮。
响应于分析者205通过在管线界面210中的模型逻辑215的管线表示中添加或删除节点来对模型逻辑215做出改变,处理器可以生成笔记本改变260,从而为添加的节点添加笔记本段落或为已删除的节点删除段落,以使笔记本220与管线界面210中显示的管线表示一致。响应于分析者205通过在笔记本界面220中的模型逻辑215的笔记本表示中添加或删除笔记本段落来对模型逻辑215做出改变,处理器可以生成管线改变265,从而为添加的笔记本段落添加管线节点或为已删除的段落删除管线节点,并且在这两种情况下,重新连接节点之间的链接,以使画布210与笔记本界面220中显示的笔记本表示一致。
—笔记本与管线同步服务—
图3图示了用于笔记本和管线的自动双向生成和同步的系统组件300的一个实施例。如本文所使用的,术语“同步(synchronize)”或“同步(synchronization)”是指使笔记本具有与管线的节点对应的段落,以及使管线具有与笔记本的段落对应的节点。在一个实施例中,笔记本段落与管线节点之间存在一对一的关系、关联或对应关系。节点与段落之间的这种关系表明,用于执行由管线中的节点表示的任务的代码被包括在笔记本中的对应段落中。系统组件300包括示例数据工作室或笔记本界面305,诸如笔记本界面220。系统组件300包括示例模型画布或管线界面310。笔记本界面305呈现用于用户交互的笔记本315。管线界面310呈现用于用户交互的管线320。笔记本315包括笔记本段落321–327。管线320包括管线节点331-337。笔记本315和管线320通过各种同步组件340的操作而自动同步。在一个实施例中,同步组件340是同步管线-笔记本同步器子系统180的模块。同步组件340包括同步器服务345、链接/次序/依赖性评估器350、小部件服务355、段落模板库360、工作室驱动程序365和管线服务370。在一个实施例中,这些组件中的每一个通过REST API相互通信。库360包括用于算法、数据供应、过滤、转换、调谐和其它任务的模板。在一个实施例中,同步组件340由云基础设施系统105的管线-笔记本同步器子系统180执行。
—笔记本和管线同步服务:笔记本到管线—
在一个实施例中,同步组件340将管线320与笔记本315同步,该管线未注册的新段落已添加到该笔记本315。在一个实施例中,同步器服务345将笔记本段落中的代码转换成管线对象。在一个实施例中,同步器服务345操作以在笔记本315中发现373未注册的新段落。工作室驱动程序365包括用于针对笔记本315的创建、读取、更新、删除(CRUD)操作的API,诸如用于读取笔记本315的笔记本段落的标识符。在一个实施例中,工作室驱动程序365解析笔记本315以识别离散的段落,例如通过识别笔记本315中的段落边界。在一个实施例中,同步器服务345反复轮询工作室驱动程序365以确定未注册的新段落375是否已被添加到笔记本315。轮询可以每隔几秒重复一次,例如大约每10秒,或例如每30秒,从而允许在笔记本段落在笔记本315中被创建时实时地检测到对笔记本315做出的改变(并传播到管线320)。对于允许并发编辑笔记本305和管线310界面的更大同时性,轮询可以更快地重复,例如每秒一次,但实际上以高达600秒的间隔进行轮询产生可接受的性能。以这种方式,执行同步组件340的处理器重复轮询应用逻辑的笔记本表示,以便实时同步管线表示和笔记本表示。在一个实施例中,在轮询中,同步器服务345通过工作室驱动程序365检索笔记本315段落的唯一标识符的列表。同步器服务345将最近检索到的列表与先前检索到的列表进行比较以确定是否存在不在先前检索到的列表中的附加段落。在一个实施例中,同步服务345接收指示已经对笔记本315做出了改变(诸如添加新段落)的警报。在有新段落375的情况下,同步器345进一步确定该段落是否“未注册”,这意味着新段落375在管线320中没有对应的节点,例如通过将新段落375的唯一标识符与管线320中节点的相关联段落的标识符列表进行比较,以确定是否存在匹配。如果没有匹配,那么新段落375未注册,并且与新段落375对应的新同步节点376应当被添加到管线320。响应于发现未注册的新段落375,同步器服务345可以检索未注册的新段落375(通过向工作室驱动程序365发出读取请求并记录响应)用于后续处理。如果存在匹配,那么新段落375已经在管线320中注册(例如,因为新段落375是响应于在管线320中创建新管线节点而动态生成了的),并且不应当在管线320中注册新管线节点。
在一个实施例中,响应于检测到同步器服务345操作以在管线320中注册377新节点376。管线服务370包括用于针对管线320(或针对描述管线320的元数据的建模元存储库和注册储存库225)的CRUD操作的API,诸如用于在管线320中创建新节点的API。在一个实施例中,同步器服务345在笔记本315中检测到未注册的新笔记本段落375之后立即将新管线节点376注册到管线320中,从而允许管线320的同步实时包括与新笔记本段落375对应的新管线节点376。在一个实施例中,同步器服务345请求链接/次序/依赖性评估器350确定新管线节点376在管线320内的放置或位置。在一个实施例中,同步器服务请求小部件服务355确定与和未注册的新段落375对应的新管线节点376相关联的任务类型。在一个实施例中,同步器服务345将新管线节点376插入管线320中由评估器350确定的位置并且具有由小部件服务355确定的任务类型。
在一个实施例中,评估器350基于新段落375在笔记本315中的段落次序内的放置来确定在管线320内的放置。在一个实施例中,评估器350通过识别笔记本中笔记本段落的执行次序来对笔记本段落进行排序。在一个实施例中,评估器350可以解析笔记本的内容以便识别段落出现的次序。评估器350可以通过将笔记本段落的唯一标识符映射到执行次序中的位置来存储识别出的执行次序,例如以键-值数据结构。在一个实施例中,执行次序只是笔记本段落出现在笔记本315中的次序。在一个实施例中,评估器350确定在次序中紧接在未注册的新段落375之前的笔记本段落,在这个示例中,前一个(次序-1)段落326。在一个实施例中,评估器350还确定在次序中紧随在未注册的新段落375之后的笔记本段落,在这个示例中,下一个(次序+1)段落327。评估器350识别与前一个(次序-1)和下一个(次序+1)段落对应的管线节点,在这个示例中分别为管线节点336和337。评估器350因此确定新管线节点376的放置在管线节点336和337之间。评估器350存储或返回所确定的放置位置以供随后用于将新节点376插入到管线320中。
在一个实施例中,笔记本无法区分(在功能上,在注释之外)由笔记本段落的功能脚本执行的任务或功能的类型。当在笔记本界面中写入新段落并且不使用管线界面时,可以进行分析以确定用于新段落的管线对象应当显示为的任务类型。在一个实施例中,同步器服务345操作以查找380最接近未注册的新段落375的任务类型。在一个实施例中,同步器服务345请求小部件服务355解析未注册的新段落375的内容以找出该段落执行的任务的类型。小部件服务355扫描未注册的新段落375的段落内容以提取段落中描述的动作,并将这些动作与段落模板库360进行比较。在库360中,段落模板按任务的类型分类,诸如算法、数据水合/脱水、数据准备、数据拆分、数据供应(data sourcing)、数据质量检查、实验、探索性数据分析(EDA)、事件编码、特征提取、过滤器、插补、缺失值处理、预测(诸如基于模型的预测)、模型训练、统计技术、变换(诸如确定性变换)、调谐、验证等。库360可以通过用户的策展继续生长。库360还可以被用作与管线界面310中节点的放置相关联的模板代码片段或模板笔记本段落的库,从而使得能够为现有任务类型快速生成代码。小部件服务将未注册的新段落375中的动作与模板段落进行比较,以基于超过某个概率置信度阈值(诸如60%置信度)确定未注册的新段落375的最可能的任务类型。例如,在小部件服务355检测到诸如读取.csv或调用数据库以刷新未注册的新段落375的内容中的数据的之类的动作的情况下,未注册的新段落375最有可能执行任务的数据供应类型。在一个实施例中,小部件服务执行对库360中的段落模板和相关联的任务类型进行训练的机器学习(ML)分类器算法,以将未注册的新段落375分类为特定任务类型。在一个实施例中,ML分类器算法是朴素贝叶斯算法、支持向量机或卷积神经网络。在小部件服务未确定任务类型的情况下,例如对于库360中的任何类型的任务都不满足置信度阈值的情况,选择通用或未定义的任务类型,并且画布310的用户可以根据用户认为合适来更新任务类型。小部件服务355将任务类型返回给同步器服务345,同步器服务345自动将新管线节点标记为那个任务类型。在一个实施例中,在管线界面GUI(在画布中)310中,存在与任务类型相关联的不同节点图标和/或颜色编码。表示特定类型的任务的节点使用任务类型的不同图标或颜色编码来显示。以这种方式,新管线节点的生成可以包括以下步骤:(i)分析没有对应管线节点的笔记本段落以识别由该笔记本段落执行的任务的类型,(ii)将新管线节点设置为属于已识别出的类型,以及(iii)在管线中显示新节点,该新节点具有与任务的类型相关联的图标。
在一个实施例中,可以在轮询周期的过程中在笔记本界面305中添加多个新段落或一全新的笔记本。响应于多个新段落,将以与上述响应于创建单个的新段落而添加单个的节点的方式相同的方式添加多个节点。在一个实施例中,从多个新笔记本节点或整个新笔记本生成多个管线节点,生成的管线可以表示笔记本的线性格式,每个节点以线性顺序链接到下一个节点。然后,用户可以在管线界面310中调整这个线性管线,以在管线中形成分支、会聚和平行路径。虽然在一个实施例中链接或边不是应用逻辑的笔记本表示的一部分,但节点之间的链接在应用逻辑的管线320表示的元数据中被维护。以这种方式,笔记本段落被自动抽象为管线节点或任务(即,作为命名对象),并且笔记本代码被封装并可作为REST API调用。
—笔记本和管线同步服务:管线到笔记本—
在一个实施例中,同步组件340使笔记本315与管线320同步,该笔记本未注册的新节点已添加到该管线320。在一个实施例中,同步器服务345将管线节点转换成笔记本段落代码。在一个实施例中,同步器服务345操作以发现383管线320中的新管线节点并将对应的新段落写入385笔记本315。在管线320中创建新节点涉及使用画布310选择节点类型并将节点放置到管线320中。每个节点类型与包含用于该节点的功能脚本的模板笔记本段落相关联。模板段落最初存储在与新管线节点相关联的建模元存储库和注册储存库225中。模板段落中的占位符可以基于与新节点的交互而被赋予值。每个节点类型具有相关联的任务类型,其控制画布310内节点的可视化表示。可以添加或修订管线320的链接以将新节点连接到管线。管线320中的每个节点可以具有唯一标识符。
在一个实施例中,同步器服务345通过管线服务370重复地轮询管线320以确定是否已经在管线320中创建了新节点。在一个实施例中,执行同步组件340的处理器重复地轮询应用逻辑的管线表示,以便以类似于上面针对轮询笔记本描述的方式实时地同步管线表示和笔记本表示。例如,同步器服务345确定管线320中是否存在在上次轮询时不存在的节点,并确定与那个节点对应的笔记本段落是否存在于笔记本315中。在一个实施例中,同步器服务345将当前在管线320中的节点的列表(例如,唯一节点ID的列表)与在上次轮询时管线320中的节点的列表进行比较。如果有节点不在上次轮询时的节点的列表中,那么存在新节点,这可能需要使对应的笔记本段落被添加到笔记本315。在一个实施例中,同步服务345接收指示已经对管线320进行了诸如添加新节点之类的改变的警报,这可能需要将对应的笔记本段落添加到笔记本315。然后,同步器服务345通过确定笔记本315中是否已经存在对应的段落来确定是否应当将与新节点对应的笔记本段落添加到笔记本315。在一个实施例中,同步器服务345通过检查在建模元存储库和注册储存库225中表示新节点的元数据来确定对应的段落是否已经存在。同步器服务345确定节点的底层段落是否保持在元存储库345中表示新节点的元数据中,或者在元存储库225中表示新节点的元数据中是否存在对笔记本段落的引用或API调用。在段落本身保持在用于新节点的元数据中的情况下,指示新节点已使用管线界面310创建,并且尚未在笔记本315中创建与新节点对应的笔记本段落,并且应当将其添加到笔记本315。在一个实施例中,同步器服务345操作以从元存储库225中表示新节点的元数据中移除段落,并将其作为到笔记本315中的新段落,并将对笔记本315中的新段落的链接、引用或API调用添加到表示新节点的元数据中。在一个实施例中,同步器服务345请求链接/次序/依赖性评估器350确定笔记本315内的新段落的放置位置。在对笔记本段落的引用或API调用保持在元数据中的情况下,用于新节点的笔记本段落已经存在于笔记本315中,并且不需要添加到笔记本315。
在一个实施例中,评估器350基于管线320内新节点的放置来确定笔记本315内新段落的放置。在所示的示例笔记本315和管线320中,段落321与节点331对应,段落322与节点332对应,段落323与节点333对应,段落324与节点334对应,段落325与节点335对应,段落326与节点336对应,段落327与节点337对应。在一个实施例中,评估器350回溯——即追踪从节点通过先前节点到一个或多个起点的路径——管线320以识别管线320中新节点376之前的所有节点。这些先前节点(在这个示例中为节点331–336)在管线320中的新节点之前执行。评估器350例如通过从描述先前节点的元数据中识别对应段落的唯一标识符来识别笔记本315中的这些对应段落(在这个示例中,节点321-336)。评估器350将段落标识符的列表返回给同步器服务345。同步器服务345指示工作室驱动程序365将新段落375插入到笔记本315中,在与先前节点对应的所有识别出的段落之后(在这个示例中,在段落326之后)。以这种方式,新笔记本段落的生成可以包括以下步骤:(i)确定或识别新笔记本段落的执行所依赖的笔记本的段落的集合;以及(ii)将新笔记本段落插入到笔记本中段落的该集合之后。
在一个实施例中,笔记本界面305将唯一标识符指派给新段落375。工作室驱动程序365接收或检索新段落375的标识符并将其提供给同步器服务345。同步器服务345指示管线服务370向描述新节点376的元数据添加对新段落375的引用或API请求(使用唯一标识符)。这使得管线界面310能够在新节点376被执行时引起新段落375的执行。这也使得新段落375的内容能够通过用户与管线界面310中的新节点376的交互来访问和编辑。在一个实施例中,笔记本(诸如笔记本315)具有用于关于笔记本的特定功能的API端点。例如,存在用于执行整个笔记本,执行、查看、编辑或删除笔记本的特定段落,在笔记本中创建新段落,发布笔记本等的API端点。在一个实施例中,用于执行、查看、编辑或删除笔记本内的特定段落(诸如新段落375)的API请求使用唯一标识符来选择段落以执行、查看、编辑或删除。以这种方式,笔记本段落被封装有应用编程接口,并且可以响应于来自管线界面的应用编程接口调用(诸如REST API请求)而执行、查看、编辑或删除笔记本段落。
因而,本文描述的系统、方法和其它实施例使得能够将笔记本改变(代码)自动同步到可视管线(表示和编码模型或其它应用逻辑),反之亦然:对管线或笔记本中任一个的改变触发可以重新生成管线或笔记本的刷新警报。
在一个实施例中,同步器服务345可以检查笔记本段落中的笔记本代码改变在管线中的有效性。任何以破坏管线完整性的方式改变笔记本代码的尝试都自动触发警报。而且,同步器服务345可以检查管线改变在笔记本中的有效性。在一些实施例中,由于笔记本界面对段落的顺序执行,由管线定义的操作的次序在笔记本中是不可能的。因而,应用逻辑只能从管线界面以正确的次序被执行。这种情况也将触发警报。警报可以在笔记本界面305和管线界面310两者中都呈现,例如作为包含描述有问题的改变或操作次序的消息的弹出窗口。在一个实施例中,警报还以消息的形式发送到与有权审查应用逻辑的用户相关联的地址。以这种方式,可以响应于识别应用逻辑的管线表示与笔记本表示之间的差异而生成警报消息;并且可以传输警报消息以在管线用户界面和笔记本用户界面中的至少一个中显示。
有利地,在两个方向上的同步实时发生,而不使用数据集成和建模服务的批处理或关闭-重启周期,如当添加管线节点或笔记本段落时那样。
—示例方法—
在一个实施例中,本文描述的计算机实现的方法的每个步骤可以由一个或多个计算设备的处理器(诸如参考图8中所示和描述的处理器810)执行(i)访问存储器(诸如存储器815和/或参考图8示出和描述的其它计算设备组件)和(ii)配置有逻辑以使系统执行该方法的步骤(诸如参考图8示出和描述的自动双向笔记本和管线生成和同步逻辑830)。例如,处理器访问存储器并从存储器读取或写入存储器以执行本文描述的计算机实现的方法的步骤。这些步骤可以包括(i)检索任何必要的信息,(ii)计算、确定、生成、分类或以其它方式创建任何数据,以及(iii)存储任何计算、确定、生成、分类或以其它方式创建的数据以供后续使用。对存储(storage)或存储(storing)的引用指示作为计算设备的存储器或存储装置/盘(诸如参考图8示出和描述的计算设备805或远程计算机865的存储装置/盘835或存储器815,或在参考图1示出和描述的数据存储库130中)中的数据结构的存储。
在一个实施例中,方法的每个后续步骤响应于解析指示先前步骤已至少执行到后续步骤开始所需的程度的接收到的信号或检索到的存储的数据而自动开始。一般而言,接收到的信号或检索到的存储的数据指示先前步骤的完成。
图4图示了与笔记本和管线的自动双向生成和同步相关联的方法400的一个实施例。在一个实施例中,方法400的步骤由管线-笔记本同步器子系统180执行(如参考图1所示和描述的)。在一个实施例中,管线-笔记本同步器子系统180是配置有自动双向笔记本和管线生成和同步逻辑830的专用计算设备(诸如计算设备805)。在一个实施例中,管线-笔记本同步器子系统180是配置有逻辑830的专用计算设备的模块(或模块的集合,例如用于同步组件340的模块,如参考图3所示和描述的)。在一个实施例中,方法400(以及本文描述的其它方法、系统和实施例)的步骤启用笔记本风格的用户界面输入和管线风格的用户界面输入在同一应用逻辑上的实时自动同步,其中这种实时同步以前不可能由计算设备执行。在一个实施例中,方法400(以及本文描述的其它方法、系统和实施例)的步骤通过统一计算机模型的笔记本风格的开发和管线风格的开发来改进计算机模型开发技术的技术,其中这两种风格的界面以前是不兼容的,从而使不同风格界面的用户能够协作开发计算机模型。
方法400可以基于各种触发来自动发起,诸如响应于通过网络接收到信号或解析存储的数据,其指示(i)系统100的用户(或管理员)已经发起方法400,(ii)方法400被调度在定义的时间或时间间隔发起,诸如以上面讨论的轮询间隔,或(iii)方法400将响应于应用逻辑的管线表示和应用逻辑的笔记本表示之一的改变而被发起。方法400响应于解析接收到的信号或检索到的存储的数据并确定该信号或存储的数据指示方法400应当开始而在开始框405处发起。处理继续到过程框410。
在过程框410处,处理器识别应用逻辑的管线表示与笔记本表示之间的差异。在一个实施例中,差异是(i)没有对应管线节点的笔记本段落和(ii)没有对应笔记本段落的管线节点之一。在一个实施例中,处理器轮询笔记本和管线,并确定自上次轮询以来是否已经更新任一个,例如通过将在上次轮询时笔记本或管线的状态的记录与当前轮询时笔记本或管线的状态进行比较,或者例如通过请求对笔记本或管线的最新更新的时间戳并将其与上次轮询的时间戳进行比较。在已经发生更新的情况下,处理器检索与更新后的笔记本或管线相关联的笔记本段落的标识符。回想一下,如上面所讨论的,笔记本段落在笔记本中具有唯一标识符,并且管线引用笔记本段落用于其底层逻辑。然后处理器在未更新的笔记本或管线中搜索该唯一标识符。如果它不存在,那么应用逻辑的管线表示与笔记本表示之间存在差异。在一个实施例中,这些步骤由同步器子系统180的同步组件340执行。在一个实施例中,如图3中所示和关于图3所描述的,如对于未注册段落373的发现和新节点383的发现所描述的那样检测差异。一旦处理器因此已经完成识别应用逻辑的管线表示与笔记本表示之间的差异,处理就继续到判定框415。
在判定框415处,处理器确定差异是否是(i)没有对应管线节点的笔记本段落;或(ii)没有对应笔记本段落的管线节点。在一个实施例中,处理器确定差异是(i)没有对应管线节点的笔记本段落,其中笔记本中存在未被管线的任何节点引用的新段落,如上文参考图3所讨论的。在一个实施例中,处理器确定差异是(ii)没有对应笔记本段落的管线节点,其中存在正将其功能脚本存储在建模元存储库和注册储存库中而不是笔记本中的新管线节点。在一个实施例中,这个确定由同步器子系统180的同步组件340做出。在处理器因此已确定差异是(i)没有对应管线节点的笔记本段落的情况下,判定框415处的处理完成,并且处理继续到过程框420。在处理器因此已确定差异是(ii)没有对应笔记本段落的管线节点的情况下,在判定框415处的处理完成,并且处理继续到过程框425。
在过程框420处,处理器通过对于不具有对应管线节点的笔记本段落在管线表示中自动生成新管线节点来同步管线表示与笔记本表示。在一个实施例中,处理器解析笔记本段落的脚本以检测指示由笔记本段落执行的任务类型的关键字,或用ML分类算法分析笔记本的脚本以确定新管线节点的任务类型,例如,如上面参考图3的查找380、小部件服务355和库360所讨论的。在一个实施例中,处理器评估笔记本段落在笔记本内的位置以确定新管线节点在管线表示内的放置,例如如上文参考图3的链接/次序/依赖性评估器350所讨论的。然后处理器将新节点配置为具有所确定的任务类型,并将笔记本段落设置为节点的功能脚本。处理器在所确定的放置位置处的位置处将新节点插入到管线表示中,并将新节点链接到管线表示中。在一个实施例中,这些步骤由同步器子系统180的同步组件340执行。一旦处理器因此通过对于不具有对应管线节点的笔记本段落在管线表示中自动生成新管线节点已经完成了管线表示与笔记本表示的同步,过程框420处的处理完成,并且处理继续到过程框430。
在过程框425处,处理器通过对于不具有对应笔记本段落的管线节点在笔记本表示中自动生成新笔记本段落来同步管线表示与笔记本表示。在一个实施例中,响应于在管线表示中创建管线节点,处理器检索为创建的管线节点选择的类型的节点的模板功能脚本,并将模板脚本写入描述管线表示的建模元存储库和注册储存库。处理器分析所创建的节点在管线内的位置以确定笔记本内放置与所创建的节点对应的新笔记本段落的位置,例如如上文参考图3的评估器350所讨论的。处理器对储存库执行查询(诸如PGQL查询)以检索模板脚本并从储存库中移除模板脚本。然后,处理器执行对笔记本的API请求以在所确定的位置创建新笔记本段落,并使用模板脚本填充新笔记本段落。在一个实施例中,这些步骤由同步器子系统180的同步组件340执行。一旦处理器因此通过对于不具有对应笔记本段落的管线节点在笔记本表示中自动生成新笔记本段落已经完成了管线表示与笔记本表示的同步,过程框425处的处理就完成,并且处理继续到过程框430。
在过程框430处,处理器或者更新管线用户界面以示出新管线节点或者更新笔记本用户界面以示出新笔记本段落。在一个实施例中,处理器响应于新节点的插入而在管线GUI中强制刷新,或者响应于新段落的插入而在笔记本GUI中强制刷新。处理器编写消息,诸如REST请求,以引起刷新,并传输请求以供用户在其上查看笔记本或管线GUI以进行数据集成和建模服务120的web浏览器或其它应用执行。响应于插入的完成,消息被迅速传输,以维持笔记本用户界面与管线用户界面之间的实际实时同步。在一个实施例中,这些步骤由同步器子系统180的同步组件340和web接口服务器135执行。一旦处理器已经因此完成了或者更新管线用户界面以显示新管线节点或者更新笔记本用户界面以显示新笔记本段落,过程框430处的处理就完成,并且处理继续到结束框435,在那里过程400结束。
图5图示了与笔记本和管线的自动双向生成和同步相关联的方法500的另一个实施例。在一个实施例中,方法500的步骤由管线-笔记本同步器子系统180(如参考图1所示和描述的)以与上面针对方法400描述的方式相似的方式执行。方法500可以基于与上面针对方法400描述的那些类似的触发被自动发起。响应于解析接收到的信号或检索到的存储的数据并确定该信号或存储的数据指示方法500应当开始,方法500在开始框505处开始。处理继续到过程框510。
在过程框510处,处理器比较画布(管线界面)数据与工作室(笔记本界面)数据。在一个实施例中,处理器比较管线数据与笔记本数据以识别未注册为管线节点的笔记本段落,例如如本文其它地方参考图3和图4的框410和415进一步详细讨论的。在一个实施例中,处理器比较管线数据与笔记本数据以识别在笔记本中不具有对应段落的管线节点,例如如本文其它地方参考图3和图4的框410和415进一步详细讨论的。过程框510处的处理完成并且处理在过程框515处继续。
在过程框510处,处理器(i)在画布(管线)中为笔记本中未保存或未注册的段落创建节点,以及(ii)从画布(管线)中移除笔记本中不存在的段落的节点。在一个实施例中,为了创建节点,处理器在管线中自动生成与未注册的笔记本段落对应的管线节点,例如,如本文其它地方参考图3和图4的框420进一步详细讨论的。
在一个实施例中,同步器服务345操作以发现已经从笔记本315中被删除的段落。在一个实施例中,如上面所讨论的,工作室驱动程序365解析笔记本315以识别离散段落。在一个实施例中,同步器服务345重复地轮询工作室驱动程序365以确定现有段落是否已从笔记本315中删除。在一个实施例中,在轮询中,同步器服务345通过工作室驱动程序365检索笔记本315段落的唯一标识符的列表。同步器服务345将最近检索到的列表与先前检索到的列表进行比较以确定先前检索到的列表中是否存在不在最近检索到的列表中的段落,从而识别被移除或删除的段落。同步器服务345然后操作以确定管线中是否存在与已删除段落对应的节点。在一个实施例中,响应于由同步器服务345生成的请求,管线服务370查询储存库225以请求引用已删除段落的节点(“要删除的节点”)的身份,并且在任何这样要删除的节点存在于管线320中的情况下,将其从管线中删除。在一个实施例中,删除包括删除前一个(次序-1)节点与要删除的节点之间的链接,删除要删除的节点,并将要删除的节点与下一个(次序+1)节点之间的链接的起点改变为前一个(次序-1)节点。这维护从要删除的节点起的链接的链接类型。
因此,在一个实施例中,同步过程还将删除从管线传播到笔记本或从笔记本传播到管线——对于不具有对应管线节点的笔记本段落,通过管线用户界面确定对应管线节点没有被删除,并且对于没有对应笔记本段落的管线节点,通过笔记本用户界面确定对应的笔记本段落没有被删除。过程框515处的处理完成并且处理在过程框520处继续。
在过程框520处,处理器链接最近添加的节点。在一个实施例中,处理器将生成的管线节点链接到如图6中所示并参考图6描述的管线中。图6图示了用于链接与笔记本和管线的自动双向生成和同步相关联的新管线节点的方法600的一个实施例。在一个实施例中,方法600的步骤由管线-笔记本同步器子系统180(如参考图1所示和描述的)以类似于上面针对方法400所描述的方式来执行。方法600可以例如响应于接收到信号或解析存储的数据(其指示新管线节点已被添加到管线)而被自动发起。方法600响应于解析接收到的信号或检索到的存储的数据并确定该信号或存储的数据指示方法500应当开始而在开始框605处开始。处理继续到过程框610。
在过程框610处,处理器基于笔记本中那些段落的执行次序对笔记本段落进行排序。这是执行的初步步骤,因为段落标识符的次序可以与执行次序不对应,并且应当基于执行次序而不是笔记本中的包括次序来评估段落。在一个实施例中,处理器解析笔记本的内容以按照段落在笔记本中出现的次序来识别段落,并提取段落的唯一ID,并且将段落的唯一ID按照该段落出现的次序写入列表中。按照由ID识别的段落出现的次序的唯一段落ID的列表是基于笔记本中执行次序的笔记本段落的排序,因为段落的笔记本执行是顺序的。过程框610处的处理完成并且处理继续到循环620内的过程框615。
在一个实施例中,可以有多于一个未注册的段落(在管线中没有对应节点的段落)需要将新节点链接到管线中。因而,处理循环620对未注册的段落重复链接过程。在过程框615处,处理器按执行次序找到未注册段落的前一个(次序-1)的段落,并按执行次序找到在未注册段落之后的下一个(次序+1)的段落。在一个实施例中,处理器解析唯一段落ID的有序列表以定位未注册段落的段落ID。然后,处理器选择列表中未注册段落的段落ID的紧接在前和紧接在后的段落ID。然后,处理器选择具有紧接在前的段落ID的段落作为前一个(次序-1)段落,并选择具有紧接在后的段落ID的段落作为下一个(次序+1)段落。在一个实施例中,段落次序的识别以及前一个段落和下一个段落的查找由如参考图3所示和描述的评估器350进行。过程框615处的处理完成并且处理继续到判定框625。
在判定框625处,处理器确定与前一个(次序-1)段落对应的第一节点是否在管线界面中连接到与下一个(次序+1)段落对应的第二节点。在一个实施例中,处理器查询储存库225以确定连接到第一节点的任何链接是否连接到第二节点。如果是(625:是),那么判定框625处的处理完成并且处理继续到过程框630。如果不是(625:否),那么判定框625处的处理完成并且处理继续到判定框635。在一个实施例中,由评估器350和参考图3所示和描述的其它同步组件340做出确定。
在过程框630处,处理器移除第一节点和第二节点之间的连接链接,并注明链接类型。链接可以具有由管线界面310用来在运行时指导管线执行的一个或多个方面的链接类型属性。在一个实施例中,处理器对储存库225执行查询以读取连接链接的链接类型,并记录检索到的链接类型的值以供后续处理。处理器然后对储存库225执行查询以删除连接链接。在一个实施例中,查询由管线服务370响应于同步服务345的请求而执行,如参考图3所示和描述的。然后过程框630处的处理完成并且处理在判定框635处继续。
在判定框635处,处理器确定第一节点(其与前一个,次序-1段落对应)是否已经在管线中连接到与未注册段落对应的节点(URP节点)。在一个实施例中,处理器查询储存库225以确定连接到第一节点的任何链接是否连接到URP节点。如果不是(635:否),那么判定框635处的处理完成,并且处理继续到过程框640。如果是(635:是),那么判定框635处的处理完成,并且处理继续到判定框645。在一个实施例中,查询由管线服务370执行并且由同步服务345做出确定,如参考图3所示和描述的。
在过程框640处,处理器将第一节点连接到管线中的URP节点,并将第一节点和URP节点之间的链路设置为默认链路类型。在一个实施例中,处理器生成并执行对储存库225的一个或多个查询以进行这个连接。查询的执行使得处理器将新链接添加到储存库225中用于管线的链接表,将链接的起点节点设置为第一节点,例如通过将第一节点的节点ID写入链接的起点节点ID字段,并将链接的目的地节点设置为URP节点,例如通过将URP节点的节点ID写入链接的目的地节点ID字段。在一个实施例中,查询是来自由管线服务370执行的同步服务345的REST API请求(参考图3示出和描述)。然后过程框640处的处理完成。
在判定框645处,处理器确定URP节点是否已经在管线中连接到第二节点(其与下一个,次序+1段落对应)。在一个实施例中,处理器查询储存库225以确定连接到URP节点的任何链接是否连接到第二节点。如果不是(645:否),那么判定框645处的处理完成,并且处理继续到过程框650。如果是(645:是),那么判定框645处的处理完成。在一个实施例中,查询由管线服务370执行并由同步服务345做出确定,如参考图3所示和描述的。
在过程框650处,处理器将管线中的URP节点与第二节点连接,并将URP节点与第二节点之间的链接设置为所注明的链接类型。在一个实施例中,处理器检索所注明的链接类型,并生成和执行对储存库225的一个或多个查询以进行这个连接。查询的执行使得处理器将新链接添加到储存库225中用于管线的链接表,将链接的源节点设置为URP节点,例如通过将URP节点的节点ID写入链路的源节点ID字段,将链接的目的地节点设置为第二节点,例如通过将第二节点的节点ID写入链接的目的地节点ID字段,并将链路类型设置为所注明的链接类型。在一个实施例中,查询是来自由管线服务370执行的同步服务345的REST API请求(参考图3示出和描述)。然后过程框650处的处理完成。
然后循环620对下一个未注册的段落重复,直到没有未注册的段落剩余。然后循环620完成,并且处理继续到结束框655,在那里过程600结束。
以这种方式,新管线节点的生成可以包括链接过程:基于执行的次序对笔记本的段落进行排序;识别(i)在执行的次序中紧接在没有对应管线节点的笔记本段落之前的第一段落,以及(ii)在执行的次序中紧接在没有对应管线节点的笔记本段落之后的第二段落;移除管线表示中与第一段落对应的第一节点和与第二段落对应的第二节点之间的连接链接;记录连接链接的类型;用默认类型的新链接将第一节点链接到新管线节点;以及将新管线节点链接到具有所记录类型的新链接的第二节点。再次参考图5,过程框520处的处理随着方法600的完成而完成,并且处理继续到结束框525,在那里方法500结束。
—示例管线图形用户界面—
图7图示了与笔记本和管线的自动双向生成和同步相关联的管线图形用户界面(GUI)700的一个实施例。管线GUI 700示出了示例管线705,其由节点的集合(诸如“加载图”节点710)和以特定次序互连节点的链接(例如,链接715)组成。管线GUI 700包括任务库菜单720,用户可以从中选择管线节点类型并在管线中创建该类型的新管线节点,例如通过点击菜单720中该特定节点类型的图标、拖动光标到管线中的位置并将其释放以形成所选择的类型的新节点。管线节点在本文中有时被称为“小部件”。如本文所使用的“小部件”还可以包括具有多个链接的节点的预先配置的管线片段,用于执行核心复杂任务,其可以类似地拖放到管线中。新节点被记录在数据结构中,例如建模元存储库和注册储存库225中的管线705。存在与新节点相关联的类型。每种类型都有模板脚本段落,在被执行时执行节点的任务功能性。响应于创建新节点,创建模板脚本段落,例如最初在储存库225中,随后作为笔记本段落同步到笔记本,如上面参考图3所讨论的。在一个实施例中,用户还可以添加没有模板脚本的通用节点。然后可以由用户用类型来标记通用节点,并且用户可以手动编写通用节点的脚本。然后手动脚本将同步到笔记本。注意的是,随着新节点的脚本段落同步到笔记本中,新节点的笔记本段落是脚本内容的权威副本。用于提供节点的功能性的脚本不存储在多个地方,而仅存储在笔记本段落中。用于新节点的脚本的笔记本段落通过对笔记本的API调用进行访问、编辑和执行。
可以通过点击第一节点连接点(诸如连接点730)并将光标拖动到第二节点连接点(诸如连接点735)来创建节点之间的链接以形成新链接。新链接被记录在数据结构中,例如储存库225中的管线705。也可以从示例管线705中删除节点和链接,例如通过用光标选择它们并选择删除图标、删除菜单选项或按下删除键。对示例管线705的改变可以响应于选择保存按钮740而被保存。可以使示例管线705响应于对管线执行按钮745的选择而被执行。可以使示例管线705中的一个或多个单独节点响应于用户对节点执行按钮的选择而独立于其它管线节点执行,诸如节点执行按钮750以使加载图节点710执行。这些执行按钮使得能够整体或部分地交互式执行示例管线705(充当交互式触发器255)。在一个实施例中,可以响应于对菜单按钮755的选择而启动菜单。用户可以通过菜单为管线提供运行时参数。
在一个实施例中,节点的选择(诸如数据摄取节点760的选择)可以启动显示节点的细节的菜单765。菜单765可以包括描述由节点执行的任务的活动描述770、指示节点的所显示类型的活动类型775、记录提供节点的功能性的笔记本段落的唯一标识符的段落ID780,以及如同它存储在笔记本段落中那样的功能脚本785。在一个实施例中,活动描述770、活动类型775和段落脚本785是用户可编辑的。例如,用户可以通过菜单765修改笔记本中的脚本785。在一个实施例中,活动描述770和活动类型775存储在储存库225中,而脚本785存储在笔记本中并通过API请求与之交互。以这种方式,管线界面提供替代界面来创建、修改和执行被记录为笔记本段落的应用逻辑。因此,用户可以访问管线用户界面内的笔记本段落并编辑管线用户界面内的笔记本段落,并且管线用户界面中的编辑修改应用逻辑的笔记本表示内的笔记本段落。
从管线界面对笔记本段落的内容更新不需要如本文所述那样同步,因为笔记本段落的内容(即,脚本)不保存在多个地方,而是存储在单个位置:笔记本。同步的情况是新的东西(节点或段落)在界面之一中出现或被添加,或者旧的或现有的东西(节点或段落)从界面之一中消失或被移除。
在一个实施例中,描述数据变换的新笔记本段落由用户写入与示例管线705对应的笔记本中。然后示例管线705与笔记本同步,并且新数据变换节点790自动出现在示例管线705中。新数据变换节点790被自动放置在正确的位置,链接自动生成和附加(例如,如参考图6中所示和描述的)以将新数据变换节点790结合到示例管线705中。
—所选择的优点—
本文描述的用于笔记本和管线的自动双向生成和同步的系统、方法和其它实施例实现了多个优点和改进,包括(1)管线用户界面中的应用逻辑的表示(业务-用户工件)与笔记本用户界面中应用逻辑的表示(建模者-用户工件)之间的自动同步;(2)基于新段落在笔记本中的用户输入创建,反向生成新节点并将其插入到链接的管线中;(3)代码生成与节点的可视管线反向生成的统一,提供了双重、非冲突界面来创建和编辑应用逻辑(允许业务或领域分析者与建模者或数据科学家之间的协作开发过程);(4)事件管线中的警报过程和应用逻辑的笔记本表示被错误地允许不同步(提供强大的制衡);(5)自动提供人工智能(AI)和模型治理和可审计性,无需人工或附加工作。
—软件模块实施例—
软件指令可以被设计为由一个或多个适当编程的处理器访问存储器来执行,诸如通过访问CPU或GPU资源。这些软件指令可以包括例如计算机可执行代码和可以被编译成计算机可执行代码的源代码。这些软件指令还可以包括以诸如脚本语言之类的解释性编程语言编写的指令。
在复杂系统中,此类指令可以被布置为程序模块,其中每个这样的模块执行特定任务、过程、功能或操作。模块的整个集合可以在其操作中由用于系统的主程序、操作系统(OS)或其它形式的组织平台控制或协调。
在一个实施例中,本文描述的组件中的一个或多个被配置为存储在非暂态计算机可读介质中的模块。模块配置有存储的软件指令,指令在由访问存储器或存储装置的至少一个处理器执行时使计算设备执行如本文所述的(一个或多个)对应功能。
—云或企业实施例—
在一个实施例中,本系统(诸如系统100)包括计算/数据处理系统,该系统包括计算应用或分布式计算应用的集合(诸如到数据集成和建模服务120的笔记本界面305或管线界面310)以供与企业相关联的其它客户端计算设备(诸如企业网络115的客户端设备145、150、155和160)访问和使用。系统和客户端计算设备通过网络(诸如网络110)彼此通信。应用和计算系统可以被配置为与基于云的网络计算系统、基础设施即服务(IAAS)、平台即服务(PAAS)或软件即服务(SAAS)体系架构或其它类型的联网计算解决方案一起操作或实现为这些。在一个实施例中,本系统实现了一种集中式服务器侧应用,该应用提供本文公开的功能中的至少一个或多个和图形用户界面以访问和操作它们,并且由许多用户通过经由计算机网络与当前计算系统(充当服务器)通信的计算设备/终端来访问。在一个实施例中,云基础设施系统105(包括数据集成和建模服务120)可以在本地部署的基础设施上实现,诸如一个或多个专用服务器的集合。在一个实施例中,本系统提供本文公开的功能中的至少一个或多个以及图形用户界面以访问和操作它们。
—计算设备实施例—
图8图示了示例计算设备800,该示例计算设备800被配置和/或编程为具有本文描述的示例系统和方法和/或等同物的示例系统和方法中的一个或多个的专用计算设备。示例计算设备800可以是计算机805,其包括通过总线825可操作地连接的至少一个硬件处理器810、存储器815和输入/输出端口820。在一个示例中,计算机805可以包括自动双向笔记本和管线生成和同步逻辑830,该逻辑被配置为促进笔记本和管线的自动双向生成和同步,类似于参考图1-7中所示和描述的逻辑、系统、方法和其它实施例。
在不同的示例中,逻辑830可以在硬件、具有存储的指令的非暂态计算机可读介质837、固件和/或它们的组合中实现。虽然逻辑830被示为附接到总线825的离散硬件组件,但是应该认识到的是,在其它实施例中,逻辑830可以在处理器810中实现,存储在存储器815中,或存储在盘835中。
在一个实施例中,逻辑830或计算机是用于执行所描述的动作的手段(例如,结构:硬件、非暂态计算机可读介质、固件)。在一些实施例中,计算设备可以是在云计算系统中操作的服务器、在软件即服务(SaaS)体系架构中配置的服务器、智能电话、膝上型计算机、平板计算设备等。
该手段可以例如被实现为被编程为促进笔记本和管线的自动双向生成和同步的ASIC。该手段还可以被实现为存储的计算机可执行指令,其作为数据840呈现给计算机805,数据840临时存储在存储器815中,然后由处理器810执行。
逻辑830还可以提供用于执行笔记本和管线的自动双向生成和同步的手段(例如,硬件、存储可执行指令的非暂态计算机可读介质、固件)。
一般地描述计算机805的示例配置,处理器810可以是各种不同的处理器,包括双微处理器和其它多处理器体系架构。存储器815可以包括易失性存储器和/或非易失性存储器。非易失性存储器可以包括例如ROM、PROM等。易失性存储器可以包括例如RAM、SRAM、DRAM等。
存储盘835可以经由例如输入/输出(I/O)接口(例如,卡、设备)845和输入/输出端口820可操作地连接到计算机805,输入/输出端口820由至少输入/输出(I/O)控制器847控制。盘835例如可以是磁盘驱动器、固态驱动器(SSD)、软盘驱动器、带驱动器、Zip驱动器、闪存卡、记忆棒等。此外,盘835可以是光驱,诸如CD-ROM驱动器、CD-R驱动器、CD-RW驱动器、DVD ROM等。例如,存储器815可以存储过程850和/或数据840。盘835和/或存储器815可以存储控制和分配计算机805的资源的操作系统。
计算机805可以经由输入/输出(I/O)控制器847、I/O接口845和输入/输出(I/O)端口820与输入/输出(I/O)设备交互、控制输入/输出(I/O)设备和/或受其控制。输入/输出设备可以包括例如一个或多个显示器870、打印机872(诸如喷墨、激光或3D打印机)、音频输出设备874(诸如扬声器或耳机)、文本输入设备880(诸如键盘)、用于指向和选择输入的光标控制设备882(诸如鼠标、轨迹球、触摸屏、操纵杆、指点杆、电子指示笔、电子手写板)、音频输入设备884(诸如麦克风或外部音频播放器)、视频输入设备886(诸如视频和静态相机或外部视频播放器)、图像扫描仪888、视频卡(未示出)、盘835、网络设备855等。输入/输出端口820可以包括例如串行端口、并行端口和USB端口。
计算机805可以在网络环境中操作并且因此可以经由I/O接口845和/或I/O端口820连接到网络设备855。通过网络设备855,计算机805可以与网络860交互。通过网络,计算机805可以逻辑地连接到远程计算机865。计算机805可以与之交互的网络包括但不限于LAN、WAN和其它网络。
—定义和其它实施例—
在另一个实施例中,所描述的方法和/或它们的等同物可以用计算机可执行指令来实现。因此,在一个实施例中,非暂态计算机可读/存储介质被配置有算法/可执行应用的存储的计算机可执行指令,当该指令由(一个或多个)机器执行时使该(一个或多个)机器(和/或相关联的组件)执行所述方法。示例机器包括但不限于处理器、计算机、在云计算系统中操作的服务器、用软件即服务(SaaS)体系架构配置的服务器、智能电话等等。在一个实施例中,计算设备用被配置为执行任何所公开的方法的一个或多个可执行算法来实现。
在一个或多个实施例中,所公开的方法或它们的等同物由以下任一项执行:被配置为执行所述方法的计算机硬件;或者,在存储在非暂态计算机可读介质中的模块中体现的计算机指令,其中指令被配置为可执行算法,可执行算法被配置为在由计算设备的至少一个处理器执行时执行所述方法。
虽然为了简化说明的目的,图中图示的方法被示出和描述为算法的一系列框,但是应该认识到的是,这些方法不受框的顺序的限制。一些框可以以与所示出和描述的不同的顺序出现和/或与其它框同时出现。而且,可以使用比全部图示的框少的框来实现示例方法。框可以被组合或分成多个动作/组件。此外,附加的和/或替代的方法可以采用未在框中图示的附加动作。
以下包括本文所采用的所选择术语的定义。定义包括属于术语的范围并且可以用于实现的组件的各种示例和/或形式。示例并不旨在是限制性的。术语的单数和复数形式都可以在定义内。
对“一个实施例”、“实施例”、“一个示例”、“示例”等的引用指示如此描述的(一个或多个)实施例或(一个或多个)示例可以包括特定的特征、结构、特性、性质、元素或限制,但并非每个实施例或示例都必须包括该特定的特征、结构、特性、性质、元素或限制。此外,短语“在一个实施例中”的重复使用不一定指代相同的实施例,但是可以指代相同的实施例。
本文使用的首字母缩写词和首字母缩写词具有以下含义:
API:应用编程接口;
ASIC:专用集成电路;
CD:光盘;
CD-R:可刻录CD;
CD-RW:可重写CD;
CPU:中央处理器;
CRUD:创建、读取、更新、删除;
DRAM:动态RAM;
DVD:数字多功能盘和/或数字视频盘;
GPU:图形处理单元;
GUI:图形用户界面;
HDD:硬盘驱动器;
HPC:高性能计算;
I/O:输入/输出;
IAAS:基础设施即服务;
ID:标识符;
JDBC:Java数据库连接;
JSON:JavaScript对象表示法;
LAN:局域网;
ML:机器学习;
MMG:模型管理和治理;
NAS:网络附加存储;
OFSAA:Oracle金融服务分析应用;
OS:操作系统;
PAAS:平台即服务;
PGQL:属性图查询语言;
PGX:属性图服务器;
PROM:可编程ROM;
RAM:随机存取存储器;
REST:代表性状态转移;
ROM:只读存储器;
SAAS:软件即服务;
SOAP:简单对象访问协议
SQL:结构化查询语言;
SRAM:同步RAM;
SSD:固态存储设备;
TCP/IP:传输控制协议/互联网协议
USB:通用串行总线;
WAN:广域网;以及
XML:可扩展标记语言。
如本文所使用的,“数据结构”是计算系统中存储在存储器、存储设备或其它计算机化系统中的数据的组织。数据结构可以是例如数据字段、数据文件、数据阵列、数据记录、数据库、数据表、图、树、链表等中的任何一个。数据结构可以由许多其它数据结构形成以及包含许多其它数据结构(例如,数据库包括许多数据记录)。根据其它实施例,数据结构的其它示例也是可能的。
如本文所使用的,“计算机可读介质”或“计算机存储介质”是指存储被配置为当被执行时执行所公开的功能中的一个或多个功能的指令和/或数据的非暂态介质。在一些实施例中,数据可以用作指令。计算机可读介质可以采取包括但不限于非易失性介质和易失性介质的形式。非易失性介质可以包括例如光盘、磁盘等。易失性介质可以包括例如半导体存储器、动态存储器等。计算机可读介质的常见形式可以包括但不限于软盘、柔性盘、硬盘、磁带、其它磁性介质、专用集成电路(ASIC)、可编程逻辑器件、紧凑型盘(CD)、其它光学介质、随机存取存储器(RAM)、只读存储器(ROM)、存储器芯片或卡、存储棒、固态存储设备(SSD)、闪存驱动器、以及计算机、处理器或其它电子设备可以利用其工作的其它介质。如果每种类型的介质在一个实施例中被选择用于实现,则其可以包括被配置为执行所公开的和/或所要求保护的功能中的一个或多个功能的算法的存储指令。
如本文所使用的,“逻辑”表示利用计算机或电气硬件、具有存储的可执行应用或程序模块的指令的非暂态介质和/或这些的组合实现的组件,以执行如本文公开的任何功能或动作,和/或使得来自另一逻辑、方法和/或系统的功能或动作如本文所公开的那样被执行。等效逻辑可以包括固件、利用算法编程的微处理器、离散逻辑(例如,ASIC)、至少一个电路、模拟电路、数字电路、编程的逻辑器件、包含算法的指令的存储器设备等,其中任何一个可以被配置为执行所公开的功能中的一个或多个功能。在一个实施例中,逻辑可以包括一个或多个门、门的组合、或者被配置为执行所公开的功能中的一个或多个能够的其它电路组件。在描述多个逻辑的情况下,有可能将多个逻辑合并到一个逻辑中。类似地,在描述单个逻辑的情况下,有可能在多个逻辑之间分配那单个逻辑。在一个实施例中,这些逻辑中的一个或多个是与执行所公开的和/或所要求保护的功能相关联的对应结构。选择实现哪种类型的逻辑可以基于期望的系统条件或规范。例如,如果考虑更高的速度,则将选择硬件来实现功能。如果考虑更低的成本,则将选择存储的指令/可执行应用来实现功能。
“可操作的连接”、或实体通过其“可操作地连接”的连接,是可以发送和/或接收信号、物理通信和/或逻辑通信的连接。可操作的连接可以包括物理接口、电接口和/或数据接口。可操作的连接可以包括足以允许可操作的控制的接口和/或连接的不同组合。例如,两个实体可以可操作地连接,以直接或者通过一个或多个中间实体(例如,处理器、操作系统、逻辑、非暂态计算机可读介质)彼此传送信号。逻辑和/或物理通信信道可以被用于创建可操作的连接。
如本文所使用的,“用户”包括但不限于一个或多个人、计算机或其它设备、或者这些的组合。
虽然已经相当详细地图示和描述了所公开的实施例,但并不旨在将所附权利要求的范围限制或以任何方式限定到这样的细节。当然,不可能为了描述主题的各个方面而描述组件或方法的每种预期的组合。因此,本公开不限于所示出和描述的特定细节或说明性示例。因此,本公开旨在涵盖落入所附权利要求范围内的变更、修改和变化。
就术语“包含”(“includes”/“including”)在具体实施方式或权利要求书中被采用的程度而言,它旨在以类似于当术语“包括”(“comprising”)作为过渡词在权利要求中被采用时所解释的方式是包含性的。
就术语“或”在具体实施方式或权利要求书中被采用的程度而言(例如,A或B),其旨在意味着“A或B或两者”。当申请人旨在指示“仅A或B但不是两者”时,那么将使用短语“仅A或B但不是两者”。因此,术语“或”在本文的使用是包含性的,而不是排他性使用。
Claims (12)
1.一种计算机实现的方法,包括:
识别应用逻辑的管线表示与笔记本表示之间的差异,其中差异是以下中的一者:(i)没有对应管线节点的笔记本段落和(ii)没有对应笔记本段落的管线节点;
通过以下操作来同步管线表示与笔记本表示,
对于没有对应管线节点的笔记本段落,在管线表示中自动生成新管线节点,以及
对于没有对应笔记本段落的管线节点,在笔记本表示中自动生成新笔记本段落;以及
或者更新管线用户界面以示出新管线节点或者更新笔记本用户界面以示出新笔记本段落。
2.如权利要求1所述的计算机实现的方法,其中新管线节点的生成还包括:
基于执行的次序对笔记本的段落进行排序;
识别(i)在执行的次序中紧接在没有对应管线节点的笔记本段落之前的第一段落,以及(ii)在执行的次序中紧接在没有对应管线节点的笔记本段落之后的第二段落;
移除管线表示中与第一段落对应的第一节点和与第二段落对应的第二节点之间的连接链接;
记录连接链接的类型;
用默认类型的新链接将第一节点链接到新管线节点;以及
用所记录类型的新链接将新管线节点链接到第二节点。
3.如权利要求1所述的计算机实现的方法,其中新笔记本段落的生成还包括:
确定新笔记本段落的执行所依赖的笔记本的段落的集合;以及
将新笔记本段落插入到笔记本中段落的所述集合之后。
4.如权利要求1所述的计算机实现的方法,其中同步还包括:
对于没有对应管线节点的笔记本段落,通过管线用户界面确定对应管线节点没有被删除;以及
对于没有对应笔记本段落的管线节点,通过笔记本用户界面确定对应笔记本段落没有被删除。
5.如权利要求1所述的计算机实现的方法,还包括重复地轮询管线表示和笔记本表示,以便实时地同步管线表示和笔记本表示。
6.如权利要求1所述的计算机实现的方法,其中新管线节点的生成还包括:
分析没有对应管线节点的笔记本段落,以识别由该笔记本段落执行的任务的类型;
将新管线节点设置为具有识别出的类型;以及
用与任务的类型相关联的图标显示管线中的新节点。
7.如权利要求1所述的计算机实现的方法,还包括:
响应于识别应用逻辑的管线表示与笔记本表示之间的差异,生成警报消息;以及
传输警报消息以显示在管线用户界面和笔记本用户界面中的至少一个中。
8.如权利要求1所述的计算机实现的方法,其中笔记本段落被封装有应用编程接口,所述方法还包括响应于来自管线界面的应用编程接口调用而执行笔记本段落。
9.如权利要求1所述的计算机实现的方法,还包括:
在管线用户界面内访问笔记本段落;以及
在管线用户界面内编辑笔记本段落;
其中管线用户界面中的编辑修改笔记本表示内的笔记本段落。
10.一种计算系统,包括:
处理器;
存储器,可操作地连接到处理器;
非暂态计算机可读介质,可操作地连接到处理器和存储器并存储计算机可执行指令,所述指令在由计算系统的至少一个处理器执行时使计算系统执行权利要求1-9中的任一项的方法的操作。
11.一种计算机实现的方法,包括:
比较管线数据与笔记本数据以识别未注册为管线节点的笔记本段落;
在管线中自动生成与未注册的笔记本段落对应的管线节点;以及
将生成的管线节点链接到管线中。
12.如权利要求11所述的计算机实现的方法,其中生成的管线节点的链接还包括:
基于执行的次序对笔记本的段落进行排序;
识别(i)在执行的次序中紧接在未注册的笔记本段落之前的第一段落,以及(ii)在执行的次序中紧接在未注册的笔记本段落之后的第二段落;
移除管线表示中与第一段落对应的第一节点和与第二段落对应的第二节点之间的连接链接;
记录连接链接的类型;
用默认类型的新链接将第一节点链接到生成的管线节点;以及
用所记录类型的新链接将生成的管线节点链接到第二节点。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN202121053246 | 2021-11-19 | ||
IN202121053246 | 2021-11-19 | ||
US17/570,435 US20230161945A1 (en) | 2021-11-19 | 2022-01-07 | Automatic two-way generation and synchronization of notebook and pipeline |
US17/570,435 | 2022-01-07 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116149523A true CN116149523A (zh) | 2023-05-23 |
Family
ID=86358992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211446563.4A Pending CN116149523A (zh) | 2021-11-19 | 2022-11-18 | 笔记本和管线的自动双向生成和同步 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2023075925A (zh) |
CN (1) | CN116149523A (zh) |
-
2022
- 2022-11-10 JP JP2022180271A patent/JP2023075925A/ja active Pending
- 2022-11-18 CN CN202211446563.4A patent/CN116149523A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2023075925A (ja) | 2023-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11423359B2 (en) | Managing tasks in a content management system | |
US20210026613A1 (en) | Data model api for live applications in a cloud collaboration platform | |
US20230222448A1 (en) | Managing projects in a content management system | |
US11941016B2 (en) | Using specified performance attributes to configure machine learning pipepline stages for an ETL job | |
US20230161945A1 (en) | Automatic two-way generation and synchronization of notebook and pipeline | |
US11829853B2 (en) | Systems and methods for tracking and representing data science model runs | |
US9501762B2 (en) | Application recommendation using automatically synchronized shared folders | |
US11086891B2 (en) | Systems and methods for tracking and representing data science data runs | |
US11294958B2 (en) | Managing a distributed knowledge graph | |
US20190108223A1 (en) | Automated system data migration | |
US11204789B2 (en) | Graphical user interface for macro generation, modification, and verification | |
US10969929B2 (en) | Dependency graph-controlled object and compute pipeline migration | |
US11809887B2 (en) | Computing system for macro generation, modification, verification, and execution | |
US11630647B2 (en) | Method and system for configuring processes of software applications using activity fragments | |
US20140189526A1 (en) | Changing log file content generation | |
CN112970011A (zh) | 记录查询优化中的谱系 | |
CN116149523A (zh) | 笔记本和管线的自动双向生成和同步 | |
US10782947B2 (en) | Systems and methods of diagram transformation | |
Lee et al. | Hands-On Big Data Modeling: Effective database design techniques for data architects and business intelligence professionals | |
US20230161596A1 (en) | Unified pipeline flow with common and phase-specific paths | |
US12039416B2 (en) | Facilitating machine learning using remote data | |
US20210264312A1 (en) | Facilitating machine learning using remote data | |
US11755536B1 (en) | System-independent data lineage system | |
US11809398B1 (en) | Methods and systems for connecting data with non-standardized schemas in connected graph data exchanges | |
US20240211217A1 (en) | Automated script generation tool for database management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |