UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#057 APIで取得したJSONデータからクロス集計する方法。PHP

記入日:2023-03-06 編集日:2023-03-06

SQL見るだけクエリ。今回は、APIで取得したJSONデータからクロス集計する方法です。PHP

この記事を読むと(約5分)
APIで取得したJSONデータからクロス集計する方法がイメージできます。

APIで取得したJSONデータからクロス集計などする方法については、以下のような手順があります。

  • JSONデータの出力: json_encode関数を使って、PHPの配列やオブジェクトをJSON形式に変換します。
  • JSONデータの取得: file_get_contents関数やcurl関数を使って、APIからJSONデータを取得します。
  • JSONデータの読み込み: json_decode関数を使って、JSON形式の文字列をPHPの配列やオブジェクトに変換します。
  • クロス集計などの処理: PHPの標準関数や自作関数を使って、JSONデータに対して必要な処理を行います。

 

具体的なコード例を書いてみます。
以下のコードは、APIで取得したJSONデータからクロス集計を行う簡単な例です。

// APIからJSONデータを取得する
$url = "https://example.com/api/data.json";
$json = file_get_contents($url);

// JSONデータを連想配列に変換する
$data = json_decode($json, true);

// クロス集計の結果を格納する配列を用意する
$result = [];

// データの件数分ループする
foreach ($data as $row) {
  // カテゴリとサブカテゴリをキーとして、値を加算する
  $category = $row["category"];
  $sub_category = $row["sub_category"];
  $value = $row["value"];

  // キーが存在しなければ初期化する
  if (!isset($result[$category])) {
    $result[$category] = [];
  }
  if (!isset($result[$category][$sub_category])) {
    $result[$category][$sub_category] = 0;
  }

  // 値を加算する
  $result[$category][$sub_category] += $value;
}

// 結果を出力する
echo json_encode($result);
 

以下の形式のJSONデータをAPIで取得した場合

[
  {
    "category": "A",
    "sub_category": "a1",
    "value": 10
  },
  {
    "category": "A",
    "sub_category": "a2",
    "value": 20
  },
  {
    "category": "B",
    "sub_category": "b1",
    "value": 30
  },
  {
    "category": "B",
    "sub_category": "b2",
    "value": 40
  }
]

以下のような結果が出力されます。

{
  "A": {
    "a1": 10,
    "a2": 20
  },
  "B": {
    "b1": 30,
    "b2": 40
  }
}

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。