

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Athena と Amazon Quick Sight を使用してネストされた JSON データを分析および視覚化する
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight"></a>

*Amazon Web Services、Anoop Singh*

## 概要
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-summary"></a>

このパターンでは、Amazon Athena を使用してネストされた JSON 形式のデータ構造を表形式ビューに変換し、Amazon Quick Sight でデータを視覚化する方法について説明します。

オペレーションシステムから得られた、API を活用したデータフィードに JSON 形式のデータを使用することで、データプロダクトを作成できます。また、このデータは顧客が製品をどのように使用しているのかを深く理解することにも役立ち、ユーザーエクスペリエンスを調整したり結果を予測したりできます。

## 前提条件と制限
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ ネストされたデータ構造を表す JSON ファイル (このパターンではサンプルファイルを使用)

**機能制限:**
+ JSON 機能は、Athena の既存の SQL 指向関数と十分に統合されています。ただし、これらは ANSI SQL 互換ではなく、JSON ファイルは各レコードを個別の行に格納することが想定されています。Athena の `ignore.malformed.json` プロパティを使用して、不正な形式の JSON レコードを null 文字に変換するか、エラーを生成するかを示す必要がある場合があります。詳細については、Athena ドキュメントの「[Best practices for reading JSON data](https://docs.aws.amazon.com/athena/latest/ug/parsing-JSON.html)」を参照してください。
+ 本パターンでは、JSON 形式の単純かつ少量のデータのみを取り上げます。これらの概念を大規模に使用する場合は、データのパーティショニングを適用し、データをより大きなファイルに統合することを検討します。

## アーキテクチャ
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-architecture"></a>

次の図は、本パターンのアーキテクチャとワークフローを示したものです。ネストされたデータ構造は、Amazon Simple Storage Service (Amazon S3) に JSON 形式で保存されます。Athena では、JSON データは Athena データ構造にマッピングされます。次に、データを分析するためのビューを作成し、Quick Sight でデータ構造を視覚化します。

![AWS でのネストされた JSON データの分析と視覚化。](https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/e9ad39a1-e0a4-4429-bdc0-594b68707761/images/474e8747-626f-468c-9c27-c007af79bf2d.png)


## ツール
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-tools"></a>

**AWS サービス**
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、量にかかわらず、データを保存、保護、取得するのに役立つクラウドベースのオブジェクトストレージサービスです。本パターンでは、Amazon S3 を使用して JSON ファイルを保存します。
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) は、標準 SQL を使用して Amazon S3 でデータを直接分析するのに役立つ対話型のクエリサービスです。本パターンでは、JSON データのクエリと変換に Athena を使用します。でいくつかのアクションを使用すると AWS マネジメントコンソール、Amazon S3 のデータに Athena をポイントし、標準 SQL を使用して 1 回限りのクエリを実行できます。Athena はサーバーレスであるため、インフラストラクチャの設定や管理は不要です。また、実行したクエリにのみ課金されます。Athena は、自動的にスケールしてクエリを並列実行するため、大規模なデータベースや複合型のクエリでも結果がすぐに返されます。    
+ [Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/quick-bi.html) は、単一のダッシュボードでデータを視覚化、分析、レポートするのに役立つクラウドスケールのビジネスインテリジェンス (BI) サービスです。Quick Sight を使用すると、機械学習 (ML) インサイトを含むインタラクティブなダッシュボードを簡単に作成して公開できます。どのデバイスからでもダッシュボードにアクセスし、アプリケーション、ポータル、ウェブサイトに埋め込むことができます。

**コードの例**

次の JSON ファイルは、本パターンで使用できるネストされたデータ構造を提供します。

```
{
  "symbol": "AAPL",
  "financials": [
    {
      "reportDate": "2017-03-31",
      "grossProfit": 20591000000,
      "costOfRevenue": 32305000000,
      "operatingRevenue": 52896000000,
      "totalRevenue": 52896000000,
      "operatingIncome": 14097000000,
      "netIncome": 11029000000,
      "researchAndDevelopment": 2776000000,
      "operatingExpense": 6494000000,
      "currentAssets": 101990000000,
      "totalAssets": 334532000000,
      "totalLiabilities": 200450000000,
      "currentCash": 15157000000,
      "currentDebt": 13991000000,
      "totalCash": 67101000000,
      "totalDebt": 98522000000,
      "shareholderEquity": 134082000000,
      "cashChange": -1214000000,
      "cashFlow": 12523000000,
      "operatingGainsLosses": null
    }
  ]
}
```

## エピック
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-epics"></a>

### S3 バケットをセットアップする
<a name="set-up-an-s3-bucket"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| S3 バケットを作成する。 | JSON ファイルを保存するバケットを作成するには、 にサインインし AWS マネジメントコンソール、[Amazon S3 コンソール](https://console.aws.amazon.com/s3/)を開き、**バケットの作成**を選択します。詳細については、Amazon S3 ドキュメントの「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」を参照してください。  | システム管理者 | 
| ネストされた JSON データを追加します。 | JSON ファイルを S3 バケットにアップロードします。JSON ファイルのサンプルについては、前のセクションを参照してください。手順については、Amazon S3 ドキュメントの「[オブジェクトのアップロード](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)」を参照してください。 | システム管理者 | 

### Athena でデータを分析する
<a name="analyze-data-in-ate"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| テーブルを作成して JSON データをマッピングします。 | 1. [Athena コンソール](https://console.aws.amazon.com/athena/)を開きます。<br />2. [Athena ドキュメント](https://docs.aws.amazon.com/athena/latest/ug/creating-databases.html)の指示に従ってデータベースを作成します。<br />3. **[データベース]** メニューから、前に作成したデータベースを選択します。<br />4. クエリエディタに以下の `CREATE TABLE` ステートメントを入力します。<pre>CREATE EXTERNAL TABLE financials_json (<br />    symbol string,<br />    financials array<<br />        struct<reportdate: string,<br />             grossprofit: bigint,<br />             totalrevenue: bigint,<br />             totalcash: bigint,<br />             totaldebt: bigint, <br />             researchanddevelopment: bigint>><br />)<br />ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION 's3://s3bucket-for-athena/'</pre><br />ここで、`LOCATION` は JSON ファイルを含む S3 バケットの場所を指定します。<br />5. **[実行]** を選択してテーブルを作成します。テーブルの作成の詳細については、[Athena ドキュメント](https://docs.aws.amazon.com/athena/latest/ug/creating-tables.html)を参照してください。 | 開発者 | 
| データ分析用のビューを作成します。 | 1. [Athena コンソール](https://console.aws.amazon.com/athena/)を開きます。<br />2. [Athena ドキュメント](https://docs.aws.amazon.com/athena/latest/ug/creating-databases.html)の指示に従ってデータベースを作成します。<br />3. **[データベース]** メニューから、前に作成したデータベースを選択します。<br />4. クエリエディタに以下の `CREATE VIEW` ステートメントを入力します。<pre>CREATE OR REPLACE VIEW financial_json_view AS <br />  SELECT <br />  symbol, <br />  financials[1].reportdate one_report_date, -- indexes start with 1 <br />  financials[1].totalrevenue one_total_revenue, <br />  financials[1].reportdate another_report_date,<br />  financials[1].totalrevenue another_total_revenue <br />FROM financials_json where symbol='AAPL' <br />ORDER BY <br />  1</pre><br />5. **[Run]** (実行) をクリックしてビューを作成します。ビューの作成の詳細については、[Athena ドキュメント](https://docs.aws.amazon.com/athena/latest/ug/create-view.html)を参照してください。 | 開発者 | 
| データを分析して検証します。 | 1. [Athena コンソール](https://console.aws.amazon.com/athena/)を開きます。<br />2. クエリエディタで、前のステップで作成したビューを使用してクエリを実行します。<br />3. JSON ファイルに照らしてデータを検証し、列名とデータ型が正しくマッピングされていることを確認します。 | 開発者 | 

### Quick Sight でデータを視覚化する
<a name="visualize-data-in-qsight"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Quick Sight で Athena をデータソースとして設定します。 | 1. [クイックコンソール](https://quicksight.aws.amazon.com/)を開きます。<br />2. [**Datasets** (データセット)]、[**New dataset** (新しいデータセット)] の順に選択します。<br />3. Athena をデータソースとして選択します。<br />4. 作成したビューが含まれるデータベースを選択します。<br />5. 作成するデータセットのビューを選択します。<br />6. **[データセットの作成を終了する]** ページで、**[データクエリを直接実行]** を選択します。<br />7. [**Visualize (視覚化する)**] を選択します。 | システム管理者 | 
| Quick Sight でデータを視覚化します。 | 1. データセットを視覚化したら、左側のペインからビジュアルを選択し、データセットのフィールドを選択します。詳細については、クイックドキュメントの[チュートリアル](https://docs.aws.amazon.com/quicksight/latest/user/example-create-an-analysis.html)を参照してください。<br />2. 変更を分析に保存します。<br />3. **[ダッシュボードの公開]** を選択し、作成したビジュアルを公開します。 | データアナリスト | 

## 関連リソース
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-resources"></a>
+ [Amazon Athena ドキュメント](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html)
+ [Amazon Quick Sight チュートリアル](https://docs.aws.amazon.com/quicksuite/latest/userguide/example-analysis.html)
+ [Working with nested JSON ](https://aws.amazon.com/blogs/big-data/create-tables-in-amazon-athena-from-nested-json-and-mappings-using-jsonserde/)(ブログ記事)