テスト、測定、資産などからのデータの視覚化、解析、処理を行うコードを開発するには、JupyterHubで新規のJupyter Notebook (.ipynb) を作成します。

Jupyter Notebookを作成する前に、以下のタスクを実行します。
  • NI パッケージマネージャからJupyter Notebooks for SystemLinkをインストールし、SystemLink Python APIを使用できる事前定義されたJupyter Notebookにアクセスします。
  • Python APIにアクセスするために、SystemLinkアプリケーションURLに/niapis/python/index.htmlを追加します。
  • Jupyter Notebookのユーザインタフェースおよび構造について理解します。
  • データの解析と処理機能を拡張するためのPythonライブラリをインストールする。NIでは、Python Package Index (PyPI) を使用してパッケージを取得することを推奨しています。
  • IPythonカーネルで使用できる組込マジックコマンドについて理解します。
  1. SystemLink Webアプリケーションで、Jupyterをクリックします。
  2. Notebookの下で、Python 3をクリックします。
    Jupyter Notebookが起動し、NotebookでPythonを実行するためのカーネルが開始します。
  3. Notebookの名前を、Notebookで実行するレポートのタイプを説明する名前に変更します。
  4. コードセルで、インタラクティブな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
  5. SystemLink Python APIの1つを使用して、視覚化、解析、または処理を行うデータにアクセスします。
    SystemLinkテストモニタサービスからのデータにアクセスするには、以下のコマンドを使用します。
    from systemlink.clientconfig import get_configuration
    from systemlink.clients.nitestmonitor import *
  6. SystemLinkサーバとの接続を確立します。
    テストモニタクライアントをサーバに接続するには、以下のコマンドを使用します。
    http_client_config = get_configuration(route_name='nitestmonitor')
  7. Notebookのパラメータとメタデータを定義します。
    1. コードセルで、パラメータを定義します。
      以下の目標を達成するためのコードを実装できます。
      • テスト結果を特定の時間範囲に絞り込む。
      • テスト結果を、テストシステムが結果を集録した日付でグループ化する。
      filter = 'startedWithin <= "30.0:0:0"'
      group_by = 'Day'
    2. 右のサイドバーで、Property Inspectorペーンを開きます。
    3. パラメータ、そのデフォルト値、および出力をCell Metadataコードブロックに追加します。
      この情報を追加するには、以下のコードを実装します。
      "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"
          ]
      }
    4. レポートを表示する場所に応じて、namespacesに次のネームスペースを1つまたは複数入力します。
      ネームスペース レポートの表示場所
      ni-assetmanager 資産マネージャ
      ni-testmanagement テストモニタ
      定義する任意のネームスペース ネームスペースを使用してNotebookをクエリする他のクライアント
    5. Notebookの使用方法に応じて、versionに次のバージョン番号のいずれかを入力します。
      目的 バージョン
      • テストインサイトでレポートの下にデータを表示します。
      • 旧バージョンのSystemLinkでインストールされたNotebookをカスタマイズします。
      1
      • 1つのNotebookで複数の出力を返します。
      • スカラ出力タイプを使用します。
      • ダッシュボードにデータを表示します。
      2
  8. 視覚化、解析、または処理するデータを取得するために、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]
  9. クエリから返されたデータをグループ化する方法に基づいて、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)
  10. データを視覚化、解析、または処理する方法を構成します。

    以下のサンプルは、データを構成するいくつかの方法を示しています。

    • レポートに含めないデータをフィルタで除外します。
    • タイムスタンプを変換します。
    • タイムフレーム内でデータを計算します。
    • データを特定の方法でグループ化します。
  11. 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) の値を確認します。その値は、セル内、およびパラメータコードセルのCode Metadata内で正しい値になっている必要があります。詳細については、前の手順7を参照してください。
    メモ Jupyter NotebookでV2レポート形式を使用する場合、レポート結果はダッシュボードでのみ視覚化できます。
  12. 新しいスカラ出力を追加します。
    スカラ出力を追加するには、以下のコードを使用できます。
    result.append({
        'type': 'scalar',
        'id': 'scalar_output',
        'config': {
            'title': 'Scalar Output Title'
        },
        'value': 3
    })
    メモ スカラ出力の追加の詳細については、GitHubのSystemLinkサンプルリポジトリを参照してください。
  13. Scrapbookを使用して結果を記録します。
    SystemLink Webアプリケーションを構文解析して結果を取得するには、以下のコードを使用できます。
    sb.glue('result', result)
  14. Notebookに新規のセルを追加します。
  15. ツールバーで、ドロップダウンメニューからMarkdownを選択し、コードに関するドキュメントをNotebookに追加します。
  16. メニューバーでRun » All Cellsを選択し、Notebookが正しくデータを返し、処理していることを確認します。 Notebookがエラーを返した場合は、エラーのあるコードセルにimport pdb; pdb.set_trace()を追加します。このコードを追加すると、組込のPythonデバッガがアクティブになります。
  17. 保存をクリックします。
  18. オプション: スケジューリングされた時間にNotebookを実行するには、解析自動化プロシージャを作成し、スケジューリングされたタスクを追加します。
Notebookを作成すると、Notebookをデータソースとしてダッシュボードタイルにバインドできます。このタイルをダッシュボードに追加すると、Notebookの結果を監視できます。Notebookの共有の詳細については、「Jupyter Notebookを共有する」を参照してください。