新建Jupyter Notebook
- 更新时间2025-12-03
- 阅读时长11分钟
在JupyterHub中新建一个Jupyter Notebook(.ipynb),编写用于可视化,分析,以及处理测试、测量及设备等数据的代码。
- 在NI Package Manager中安装Jupyter Notebooks for SystemLink以获取使用SystemLink Python API的预定义Jupyter Notebook。
- 在SystemLink应用程序URL后添加/niapis/python/index.html,以访问Python API。
- 了解Jupyter Notebook的用户界面和结构。
- 安装用于增强数据分析和处理的Python库。NI建议使用Python Package Index (PyPI)获取程序包。
- 了解IPython内核支持的内置Magic命令。
- 在SystemLink Web应用程序中,点击Jupyter。
-
在Notebook下,点击Python 3。
随后Jupyter Notebook将打开,并启动内核,在Notebook中运行Python。
- 重命名Notebook以反映其执行的报告类型。
-
在代码单元格中,导入交互式Notebook所需的Python模块、库和小组件。
例如,导入Pandas和Scrapbook的代码可实现下列目标:
- 创建和处理数据框(Pandas)。
- 执行Notebook (Scrapbook)。
- 获取Notebook结果(Scrapbook)。
import copy import datetime import dateutil.parser import pandas as pd import scrapbook as sb from dateutil import tz
-
选用一个SystemLink Python API来访问要可视化、分析或处理的数据。
如需访问SystemLink测试监视器服务的数据,请使用以下命令。
from systemlink.clientconfig import get_configuration from systemlink.clients.nitestmonitor import *
-
建立与SystemLink Server的连接。
如要将测试监视器客户端连接到服务器,可使用以下命令。
http_client_config = get_configuration(route_name='nitestmonitor')
-
定义Notebook的参数和元数据。
-
在代码单元格中定义参数。
可以通过代码实现下列目标:
- 根据指定时间范围筛选测试结果。
- 根据测试系统获取结果的日期对测试结果进行分组。
filter = 'startedWithin <= "30.0:0:0"' group_by = 'Day'
- 在右侧边栏中,打开Property Inspector窗格。
-
在单元格元数据代码块中,添加参数、参数默认值和输出。
要添加该信息,可通过以下代码实现:
"papermill": { "parameters": { "group_by": "Day", "results_filter": "startedWithin <= \"30.0:0:0\"", } }, "systemlink": { "namespaces": [ "ni-testmanagement" ], "outputs": [ { "display_name": "This will show in dashboard output selector", "id": "data_frame_output", "type": "data_frame" }, { "display_name": "This will show in dashboard output selector", "id": "scalar_output", "type": "scalar" } ], "parameters": [ { "display_name": "Group By", "id": "group_by", "options": [ "Day", "System", "Test Program", "Operator", "Product" ], "type": "string" }, { "default_display": { "startedWithin": { "unit": "DAYS", "value": 30 } }, "display_name": "Results Filter", "id": "results_filter", "type": "test_monitor_result_query" }, ], "version": 2 }, "tags": [ "parameters" ] } -
对于命名空间(namespaces),根据希望报告显示的位置输入以下一个或多个命名空间:
命名空间 报告显示位置 ni-assetmanager 设备管理器 ni-testmanagement 测试监视器 任何自定义的命名空间 使用命名空间查询Notebook的其他客户端 -
对于版本(version),根据Notebook的使用目的输入以下其中一个版本号:
目标 版本 - 要在“测试信息”下的“报告”中查看数据。
- 自定义使用旧版本SystemLink安装的Notebook。
1 - 要用一个Notebook返回多个输出。
- 要使用标量输出类型。
- 要在仪表板中查看数据。
2
-
在代码单元格中定义参数。
-
查询SystemLink数据服务以查找要显示、分析或处理的数据。
如需按升序查询测试监视器服务以获取测试结果,可使用以下代码:
results_api = ResultsApi(api_client=ApiClient(http_client_config)) query = ResultsAdvancedQuery(filter=filter, order_by=[ResultSortDefinitionObject(field=ResultField.STARTED_AT)]) query_response = await results_api.query_results_v2(post_body=query) results = query_response.results results_list = [result.to_dict() for result in results]
-
根据查询结果的返回数据分组方式,对Pandas数据框数据进行格式化处理。
要将测试结果按状态分组,可使用以下代码:
group_names = [] for result in results_list: if grouping in result: group_names.append(result[grouping]) formatted_results = { 'id': [result['id'] for result in results_list], 'status': [result['status']['status_type'] for result in results_list], grouping: group_names } df_results = pd.DataFrame.from_dict(formatted_results) -
配置显示、分析或处理数据的方式。
以下是配置数据的一些方法示例。
- 筛除不希望包含在报告中的结果。
- 转换时间标识。
- 计算某一时间范围内的数据。
- 以特定方式对数据进行分组。
-
将Pandas数据框转换为SystemLink报告的输出格式。
要转换Pandas数据框,可使用以下代码:
result.append({ 'type': 'data_frame', 'id': 'data_frame_output', data': [{ 'format': 'XY', 'x': ['2018-11-17T00:00:00', '2018-11-18T00:00:00', ...], 'y': [94.0, 89.9, ...] }], 'config': { 'title': 'Title', 'graph': { 'axis_labels': ['x-axis-label', 'y-axis-label'], 'tick_labels': [{'x': 0, 'label': 'tick label 0', ... }], 'orientation': 'VERTICAL', 'plot_style': ['SCATTER'], 'plot_color': ['blue'] } } })提示 为确保测试监视器支持数据框输出,请验证ID (data_frame_output)的值。该值必须在单元格内和参数代码单元格的代码元数据中均正确无误。详细信息请参阅前文第7步。备注 如果在Jupyter Notebook中使用V2报告格式,则只能在仪表板上可视化报告结果。 -
添加一个新标量输出。
如需添加标量输出,可使用以下代码:
result.append({ 'type': 'scalar', 'id': 'scalar_output', 'config': { 'title': 'Scalar Output Title' }, 'value': 3 })备注 有关添加标量输出的详细信息,请参阅GitHub中的SystemLink范例库。 -
使用Scrapbook记录结果。
如需从SystemLink Web应用程序解析结果,可使用以下代码。
sb.glue('result', result) - 在Notebook中添加一个新单元格。
- 在工具栏中,从下拉菜单中选择Markdown,将代码文档添加到Notebook中。
- 在菜单栏上,选择,验证Notebook是否正确返回和处理数据。 如果Notebook返回错误,将import pdb; pdb.set_trace()连同错误添加到代码单元格。添加此代码将激活内置的Python调试器。
- 单击保存(Save)。
- 可选: 如需在指定时间运行Notebook,可创建分析自动化程序并添加计划任务。
相关内容
- Python API参考
- 安装其他Python模块
使用第三方Python模块进一步自定义测试报告。
- Jupyter用户界面
- Notebook文档的结构
- PyPI
- 内置Magic命令
- SystemLink示例存储库
- 为分析自动化程序添加或编辑任务
可通过任务使分析自动化程序进行数据分析。