跳到主要内容

函数结果格式化输出

本节介绍 FuncStudio 函数内核计算结果的格式化输出功能。

功能定义

FuncStudio 支持用户将算法内核的计算结果以特定的格式发送到运行标签页的结果栏中进行显示,包括消息、图形和表格类型的结果。

功能说明

消息类型结果输出

在用户自定义算法内核中添加调用 FuncStudio SDK 提供的 log 方法的代码,实现在 FuncStudio 运行结果里面输出文本类消息。

log 方法的定义为:def log(self, content, level='info', html=False, key=None):

包含 4 个参数:

参数类型描述
content字符串/变量消息内容
level字符串消息级别。默认为 info,可选:critical(严重错误)、error(错误)、warning(警告)、info(信息)、verbose(日志)、debug(调试)
html字符串是否为 HTML 格式,默认是 false,可选 ture 或者 false
key字符串消息键(看作是一个标识符)。key 相同的内容会写入同一条消息,并覆盖掉前面的内容

每条消息前面的图标level 参数的设置有关,不同 level 参数的消息如下。

import cloudpss  
if __name__ == '__main__':
job = cloudpss.currentJob()
job.log('严重错误消息','critical')
job.log('错误消息','error')
job.log('警告消息','warning')
job.log('信息消息','info')
job.log('日志消息','verbose')
job.log('调试消息','debug')

上述代码输出效果如下图:

不同 level 参数的消息
不同 level 参数的消息
提示

其中,日志消息和调试消息需要点击消息前面的图标显示。

图形结果输出

在用户自定义算法内核中添加调用 FuncStudio SDK 提供的 plot 方法的代码,实现在 FuncStudio 运行结果里面输出图形类消息。

plot 方法的定义为:def plot(self, traces=[], layout={}, title='', key=None, verb='replace'):

包含 5 个参数:

参数类型描述
traces数组/列表图形数据组
layout字典图形的坐标轴格式
title字符串图形的标题
key字符串key 相同的数据将显示到同一个图形上
verb字符串数据的发送方式。默认为 replace,可选 replaceappendprependupdate

traces 参数用于配置图形的数据,是一个存放图形数据的字典列表,可以包含多个图形数据,每个图形数据是一个格式固定的字典。

以绘制二维曲线图形为例,trace 参数如下:

trace = [t1,t2,...],其中:t1={'name':str,'type':'scatter','x':float [],'y':float []}

参数类型描述
name字符串曲线名称
type字符串曲线类型 scatter
x实数列表输出的 x 轴数据
y实数列表输出的 y 轴数据
注意

注意输出的 X 轴和 Y 轴数据必须是可以 JSON 化的实数列表。

import cloudpss  
if __name__ == '__main__':
job = cloudpss.currentJob()
t1 = {
"name":"时序曲线",
"type":"scatter",
"x": [1,2,3,4,5,6],
"y": [1,2,3,4,5,6]
}
job.plot([t1])

上述代码输出效果如下图:

traces 参数的用法
traces 参数的用法

同一个图形中显示多条曲线

一个二维曲线图形中可以显示多条曲线,只需再参数 traces 的列表内添加其他曲线的数据字典即可,不同曲线的颜色 FuncStudio 会自动区别。

import cloudpss  
if __name__ == '__main__':
job = cloudpss.currentJob()
t1 = {
"name":"曲线1",
"type":"scatter",
"x": [1,2,3,4,5,6],
"y": [1,2,3,4,5,6]
}
t2 = {
"name":"曲线2",
"type":"scatter",
"x": [1,2,3,4,5,6],
"y": [6,5,4,3,2,1]
}
t3 = {
"name":"曲线3",
"type":"scatter",
"x": [1,2,3],
"y": [6,5,4]
}
job.plot([t1,t2,t3])

上述代码输出效果如下图:

绘制多条曲线
绘制多条曲线

高级图形输出

FuncStudio 支持绘制 plotly 库提供的多样化图形,例如,Sankey 桑基图、Sunburst 旭日图等,具体可以查看 plotly 帮助文档

不同的图形样式,其 traces 列表中的字典格式也是不一样的,使用时只需要参照 plotly 里面给定的 data 格式来定义图形数据字典,并写入 traces 列表内即可。

表格结果输出

在用户自定义算法内核中添加调用 FuncStudio SDK 提供的 table 方法的代码,实现在 FuncStudio 运行结果里面输出表格类消息。

table 方法的定义为: table(self, columns=[], title='', key=None, verb='replace')

参数类型描述
columns数组/列表表格的列数据组
title字符串表格的标题
key字符串key 相同的数据将显示到同一个表格中

其中,columns 用于配置表格的列数据,是一个存放列数据的字典列表,可以包含多个列数据,

每个列数据是一个格式固定的字典,如下所示:

columns = [c1,c2,c3,...],其中:c1={'name':str,'type':'number','data':[]}

属性类型描述
namehtml 标签列名称
type字符串data 类型,可选 texthtmlnumber
data列表列数据

columns 参数用于定义表格的列数据。

import cloudpss  
if __name__ == '__main__':
job = cloudpss.currentJob()
# 定义列数据
c1 = {
'name':'<b>EXPENSES</b>', # 给<b></b>之间的文字字体加粗
'type':'html', # 支持在`data`里面添加`html`标签
'data': ['Salaries', 'Office', 'Merchandise', 'Legal', '<b>TOTAL</b>']
}
c2 = {
'name': "<b>Q1</b>",
'type': 'number',
'data': [1200000, 20000, 80000, 2000, 12120000]
}
c3 = {
'name': "<b>Q2</b>",
'type': 'number',
'data': [1300000, 20000, 120000, 2000, 131222000]
}
job.table([c1,c2,c3],title = '表1',key = 'table-1')

上述代码输出效果如下图: columns 参数用法