暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 与分析相关的工作流自动化建议

askTom 2017-11-01
256

问题描述

你好,

我在分析部门工作,在那里我支持一个由许多数据科学家组成的团队。

我们使用Oracle Database Enterprise v11.2.0.4作为我们的后端数据库,并且我已经开发了几种使用PL/SQL过程,函数等的自动化。

我已经创建了一个自定义的 “工作流” 表,其中包含按特定顺序排序的任务行,以便该过程随后 “拾取” 这些行并开始执行诸如创建对象 (表,mv或视图) 动态地或从另一个用户的模式调用另一个过程或包等。所有这些都是通过一个计划的工作来完成的,该工作调用该过程,反过来,该过程循环遍历它需要执行的所有 “任务”,并在没有人工干预的情况下动态执行它们。


通常,数据科学家在处理项目时会执行以下步骤:-

1.在从内部或外部源系统清除原始数据后,创建一些表 (使用Oracle SQL Developer工具在Oracle数据库中)。

2.使用R或Python工具从Oracle读取这些表中清理的行的内容,并执行进一步的统计和分析处理。在许多情况下,在R或Python中进行的这些统计分析的结果将导致使用数据科学家的R代码或Python代码在Oracle中创建 “结果” 表。

3.使用报告/仪表板工具,然后从 “结果” 表中读取以创建报告。


使用我的自定义 “工作流” 表和过程方法,我想知道如何增强我的代码在PL/SQL,这样它可以迅速调用R或Python工具,并提供适当的R或Python代码文件名,数据科学家写了他们的代码,也,让PL/SQL过程 “等待” 这些外部程序完成处理并创建 “结果” 表回到Oracle中,并以某种方式获得 “信号”,表明它已完成,以便继续执行下一个任务。

基本上,我正在寻找一种方法来 “缝合” 工作流,以便在Oracle和外部程序/工具之间切换,以便它等待接收某种 “信号”,它已经完成,在过程循环通过下一个记录。

任何建议,提示或想法都会有所帮助。我很抱歉没有提供任何PL/SQL代码,我不希望您有任何代码,因为我只是在寻找一些想法或方法,我可以采取之前,我的代码。

提前谢谢!

专家解答

你可以在这里考虑几个选择

1) PL/SQL可以调用Java,这意味着您可以让PL/SQL调用Java例程,然后调用主机命令,例如

https://asktom.oracle.com/pls/asktom/asktom.search?tag=running-os-commandprogram-from-java

https://asktom.oracle.com/pls/asktom/asktom.search?tag=java-procedure-for-host-calls-on-unix-environment-200010

外部表

外部可以调用预处理器脚本。这最初是为了格式化传入的数据而设计的,但是当然,您可以操纵运行您想要的 * 任何 *。

因此,“从my_external_table中选择 *” 可能实际上只是为了运行脚本,而查询的输出只是脚本的返回代码。

3) 队列

您的PL/SQL程序将消息放在队列中。您的主机程序连接到数据库,并在该队列上 “永远” 侦听,然后在收到消息时开始

4) 调度程序

作业调度程序可以创建 “链” 和 “事件”,因此可以在另一个任务完成或文件出现时对任务进行序列化和启动。

很多选择

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论