azure 获取Databricks SQL笔记本导致电源自动化

mftmpeh8  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(81)

我有一个databricks笔记本,里面有一条SQL语句,类似于

下面的内容
我需要这个笔记本电脑由powerautomate流运行,并返回笔记本电脑的输出。
我按照here中提到的指令操作,它工作正常,作业在数据库中运行。但是,我无法将笔记本输出取回到流中。我必须把输出写在databricks notebook中才能获取它吗?
任何帮助或链接将不胜感激。

ggazkfy8

ggazkfy81#

AFAIK我们无法使用SQL代码从数据块笔记本返回值。为此,我们需要在notebook中使用dbutils.notebook.exit()

因此,将SQL笔记本的最后一个单元格更改为python单元格并使用它。
对于样品,我已经返回如下。
x1c 0d1x的数据

%python
dbutils.notebook.exit(spark.sql("select split('Rakesh Govindula Laddu Virat',' ') as value,'Hi laddu' as Greetings;").collect())

字符串
你可以根据你的要求返回任何字符串。现在,使用逻辑应用程序HTTP post调用它。但是这个动作只会触发notebook的执行,而不会从notebook获取输出。
对于Notebook的输出,我们需要使用下面的API(GET),在逻辑应用中使用执行作业的run id

https://adb-Xxxxxxxxxxxxxxxxx.azuredatabricks.net/api/2.1/jobs/runs/get-output?run_id=<job run id>


在逻辑应用的HTTP post之后,使用另一个HTTP action with GET并提供我们从HTTP post action中获得的run_id

https://adb-Xxxxxxxxxxxxxxxxx.azuredatabricks.net/api/2.1/jobs/runs/get-output?run_id=@{body('HTTP')?['run_id']}



在这里,我使用Delay来等待作业完成,并根据作业运行执行情况给出1分钟的时间。根据作业运行执行时间更改时间。(或者)您可以使用**@sharepointed在此博客中提到的Do Until**循环方法

执行


输出


相关问题