JSONPath を使用してブック内の JSON データを変換する

ブックでは、多くのソースからデータのクエリを実行できます。 Azure Resource Manager やカスタム エンドポイントなどの一部のエンドポイントでは、JSON で結果を返すことができます。 クエリ対象のエンドポイントによって返される JSON データが必要でない形式である場合は、JSONPath 変換を使用して JSON をテーブル構造に変換できます。 その後、テーブルを使用してブックの視覚化をプロットできます。

JSONPath は、XML 用の XPath に似た JSON 用のクエリ言語です。 XPath と同様に、JSONPath を使用すると、JSON 構造からデータの抽出とフィルター処理を行うことができます。

JSONPath を使用する

この例では、JSON オブジェクトは店舗の在庫を表します。 書名、著者、価格を一覧表示して、店舗の利用可能な書籍のテーブルを作成します。

  1. [編集] を選択して、ブックを編集モードに切り替えます。

  2. [追加]>[クエリの追加] リンクを使用して、クエリ コントロールをブックに追加します。

  3. データ ソースを JSON として選択します。

  4. JSON エディターを使用して、次の JSON スニペットを入力します。

    { "store": {
        "books": [ 
          { "category": "reference",
            "author": "Nigel Rees",
            "title": "Sayings of the Century",
            "price": 8.95
          },
          { "category": "fiction",
            "author": "Evelyn Waugh",
            "title": "Sword of Honour",
            "price": 12.99
          },
          { "category": "fiction",
            "author": "Herman Melville",
            "title": "Moby Dick",
            "isbn": "0-553-21311-3",
            "price": 8.99
          },
          { "category": "fiction",
            "author": "J. R. R. Tolkien",
            "title": "The Lord of the Rings",
            "isbn": "0-395-19395-8",
            "price": 22.99
          }
        ],
        "bicycle": {
          "color": "red",
          "price": 19.95
        }
      }
    }
    
  5. [結果の設定] タブを選択し、結果の形式を [JSON パス] に切り替えます。

  6. 次の JSON パスの設定を適用します。

    • JSON パス テーブル: $.store.books。 このフィールドは、テーブルのルート パスを表します。 この場合、ストアの書籍の在庫に関心があります。 テーブル パスによって、JSON を書籍情報にフィルター処理します。

      列 ID 列の JSON パス
      タイトル $.title
      Author $.author
      Price $.price

    列 ID は列ヘッダーです。 列の JSON パス フィールドは、テーブルのルートから列の値までのパスを表します。

  7. [クエリの実行] を選択します。

    Screenshot that shows editing a query item with JSON data source and JSON path result format.

正規表現を使用して値を変換する

標準形式ではないデータがある場合があります。 そのデータを効果的に使用するために、そのデータを標準形式に変換します。

この例では、発行日は YYYMMMDD 形式です。 コードでは、この値はテキストではなく数値として解釈され、結果として日付ではなく右揃えの数値として解釈されます。

結果設定で [種類][正規表現の一致][置換後の文字列] の各フィールドを使用して、結果を実際の日付に変換できます。

結果設定フィールド 説明
Type API によって返される値の種類を明示的に変更できます。 通常、このフィールドは未設定のままですが、このフィールドを使用して値を別の種類に強制することができます。
正規表現の一致 正規表現を入力して、値全体ではなく、API によって返される値の一部を取得できます。 通常、このフィールドは [置換後の文字列] フィールドと組み合わされます。
置換後の文字列 このフィールドを使用して、正規表現と共に新しい値を作成します。 この値が空の場合、既定値は $& です。これは式の一致結果です。 他の出力の生成に使用できるその他の値については、string.replace のドキュメントを参照してください。

YYYMMDD 形式を YYYY-MM-DD 形式に変換するには:

  1. グリッドで [発行済み] 行を選択します。

  2. [種類] フィールドで [日付/時刻] を選択して、グラフで列を使用できるようにします。

  3. [正規表現の一致] フィールドで、([0-9]{4})([0-9]{2})([0-9]{2}) という正規表現を使用します。 この正規表現は次のとおりです。

    • 4 桁の数字、2 桁の数字、さらに別の 2 桁の数字と一致します。
    • かっこでは、次の手順で使用するキャプチャ グループが形成されます。
  4. [置換後の文字列] で、$1-$2-$3 という正規表現を使用します。 この式では、キャプチャされた各グループにハイフンを含む新しい文字列が作成され、"12345678" が "1234-56-78" に変換されます。

  5. クエリを再実行します。

    Screenshot that shows JSONpath converted to date-time format.

次のステップ