データをネストしてJSON形式でエクスポートする方法

データをJSONファイルとしてエクスポートしたい場合があります。

JSONファイルの優れた点の1つは、データをネストされた構造にすることができることです。

下記は1行が各注文の明細を表す売上データです。

エクスポートボタンからこのデータをJSONファイルとしてエクスポートしたとします。

その場合は、フラットなJSON形式のデータがエクスポートされます。

しかし、顧客が複数の注文をしていることがあり、JSON形式がネストされたデータをサポートできることを考えると、次のような形でデータを作成したい場合があります。

上記のデータを見ると、最初の顧客の複数の注文が「Orders」プロパティ内にネストされています。

このタイプのJSON形式のデータはExploratoryで生成できますが、カスタムRコマンドを使用する必要があります。

ネストされたデータを作成する

1.顧客ごとにデータをグループ化

まず、顧客ごとにデータをグループ化して、次のステップで顧客ごとにネストされた注文データを作成できるようにします。

顧客IDでグループ化します。

2.ネストされたデータフレームを作成します

次に、カスタムRコマンドの「nest」関数を使用して、ネストされたデータフレームを作成します。

ステップメニューから「カスタムRコマンド」を選択します。

次のようなコマンドを入力します。

nest(国, 注文日, 製品ID, 製品名, 売上, .key="Orders")

このコマンドでは、データのネストされた部分に配置する列を選択しています。顧客ごとに複数の注文を作成し、注文情報をデータのネストして作成したかったので、注文関連の列を指定しています。

nest関数の最後にある .keyという引数は、ネストされたデータを保持する列の列名を設定しています。

カスタムRコマンドを実行すると、2つの列ができます。1つはグループ化の列ともう1つはネストされたデータを保持する列です。

3.JSONとしてエクスポートします

理想的には、エクスポートボタンのメニューからネストされたデータをJSONファイルとしてエクスポートしたいですが、現時点ではネストされたデータはサポートされていません。したがって、データをJSONファイルとしてエクスポートするには、以下のようなカスタムRコマンドを実行する必要があります。

ステップメニューから「カスタムRコマンド」を選択します。

次のコマンドを入力して実行します。

(function(x){ jsonlite::write_json(x, "~/test.json", pretty=TRUE);  x  })

上記のコマンドは、"jsonlite"パッケージからwrite_jsonという関数を呼び出す関数を作成し、"test.json"というファイル名のJSONファイルをユーザーのホームディレクトリに保存します。

エクスポートされたJSONファイルを開くと、次のようなものが表示されます。

エクスポートステップを無効にする

ネストされたデータを作成してJSONファイルとしてエクスポートする方法、注意すべきことが1つあります。

エクスポートのステップはこのデータフレームの最後のステップにあるため、このデータフレームを開くたびにエクスポートのステップが実行されます。つまり、毎回JSONファイルが再作成されることになります。

特に大きなデータがある場合は、エクスポートステップを実行したくない場合があります。

ステップを無効化して、JSONファイルをエクスポートする必要がある場合にのみ有効にすることができます。