使用 Amazon Athena 和 Amazon 分析巢狀JSON資料並將其視覺化 QuickSight - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon Athena 和 Amazon 分析巢狀JSON資料並將其視覺化 QuickSight

由 Anoop Singh 建立 (AWS)

環境:PoC 或試行

技術:分析;資料庫

AWS 服務:Amazon AthenaAmazon QuickSight

Summary

此模式說明如何使用 Amazon Athena 將巢狀JSON、格式化的資料結構轉換為表格式檢視,然後在 Amazon 中視覺化資料 QuickSight。

您可以針對來自作業系統的 API受支援資料饋送,使用 JSON格式化的資料來建立資料產品。此資料也可以協助您更了解您的客戶及其與產品的互動,因此您可以自訂使用者體驗並預測結果。

先決條件和限制

先決條件

  • 作用中 AWS 帳戶

  • 代表巢狀資料結構JSON的檔案 (此模式提供範例檔案)

限制:

  • JSON 功能與 Athena 中現有的 SQL導向函數完美整合。不過,它們ANSISQL不相容,JSON因此檔案預期會將每個記錄分開行。您可能需要使用 Athena 中的 ignore.malformed.json 屬性來指示格式不正確JSON的記錄是否應轉換為 null 字元或產生錯誤。如需詳細資訊,請參閱 Athena 文件中的讀取JSON資料的最佳實務

  • 此模式僅考慮簡單和少量JSON的 格式化資料。如果您想要大規模使用這些概念,請考慮套用資料分割,並將資料合併為較大的檔案。

架構

下圖顯示此模式的架構和工作流程。巢狀資料結構會以 JSON 格式儲存在 Amazon Simple Storage Service (Amazon S3) 中。在 Athena 中,JSON資料會映射到 Athena 資料結構。然後,您可以建立檢視來分析資料,並將 中的資料結構視覺化 QuickSight。

在 上分析並視覺化巢狀JSON資料 AWS

工具

AWS 服務

  • Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。此模式使用 Amazon S3 來存放JSON檔案。

  • Amazon Athena 是一種互動式查詢服務,可協助您使用標準 直接在 Amazon S3 中分析資料SQL。此模式使用 Athena 來查詢和轉換JSON資料。透過 中的一些動作 AWS Management Console,您可以將 Athena 指向 Amazon S3 中的資料,並使用 標準SQL執行一次性查詢。Athena 無伺服器,因此沒有可設定或管理的基礎設施,您只需為執行的查詢支付費用。Athena 會自動擴展並平行執行查詢,因此即使使用大型資料集和複雜的查詢,結果也會更快。    

  • Amazon QuickSight 是一項雲端規模商業智慧 (BI) 服務,可協助您在單一儀表板上視覺化、分析和報告資料。 QuickSight 可讓您輕鬆建立和發佈互動式儀表板,其中包含機器學習 (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 } ] }

史詩

任務描述所需的技能

建立 S3 儲存貯體。

若要建立儲存貯體以存放JSON檔案,請登入 AWS Management Console,開啟 Amazon S3 主控台 ,然後選擇建立儲存貯體 。如需詳細資訊,請參閱 Amazon S3 文件中的建立儲存貯體。 

系統管理員

新增巢狀JSON資料。

將JSON檔案上傳至 S3 儲存貯體。如需範例JSON檔案,請參閱上一節。如需指示,請參閱 Amazon S3 文件中的上傳物件。 Amazon S3

系統管理員
任務描述所需的技能

建立對應JSON資料的資料表。

  1. 開啟 Athena 主控台

  2. 遵循 Athena 文件 中的指示建立資料庫。

  3. 資料庫功能表中,選擇您建立的資料庫。

  4. 在查詢編輯器中,輸入如下所示的CREATE TABLE陳述式:

    CREATE EXTERNAL TABLE financials_json ( symbol string, financials array< struct<reportdate: string, grossprofit: bigint, totalrevenue: bigint, totalcash: bigint, totaldebt: bigint, researchanddevelopment: bigint>> ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION 's3://s3bucket-for-athena/'

    其中 LOCATION指定包含 JSON 檔案的 S3 儲存貯體位置。

  5. 選擇執行以建立資料表。

如需建立資料表的詳細資訊,請參閱 Athena 文件

開發人員

建立資料分析的檢視。

  1. 開啟 Athena 主控台

  2. 按照 Athena 文件 中的指示建立資料庫。

  3. 資料庫功能表中,選擇您建立的資料庫。

  4. 在查詢編輯器中,輸入如下所示的CREATE VIEW陳述式:

    CREATE OR REPLACE VIEW financial_json_view AS SELECT symbol, financials[1].reportdate one_report_date, -- indexes start with 1 financials[1].totalrevenue one_total_revenue, financials[1].reportdate another_report_date, financials[1].totalrevenue another_total_revenue FROM financials_json where symbol='AAPL' ORDER BY 1
  5. 選擇 Run (執行) 以建立檢視。

如需建立檢視的詳細資訊,請參閱 Athena 文件

開發人員

分析和驗證資料。

  1. 開啟 Athena 主控台

  2. 在查詢編輯器中,使用您在上一個步驟中建立的檢視執行查詢。

  3. 根據JSON檔案驗證資料,以確認資料欄名稱和資料類型已正確映射。

開發人員
任務描述所需的技能

在 中將 Athena 設定為資料來源 QuickSight。

  1. 開啟QuickSight 主控台

  2. 選擇資料集,再選擇新增資料集

  3. 選擇 Athena 作為資料來源。

  4. 選擇包含您建立之檢視的資料庫。

  5. 選擇您要為其建立資料集的檢視。

  6. 完成資料集建立頁面上,選擇直接查詢資料

  7. 選擇 Visualize (視覺化)

系統管理員

視覺化 中的資料 QuickSight。

  1. 視覺化資料集之後,從左側窗格中選擇視覺效果,然後選擇資料集的欄位。如需詳細資訊,請參閱 QuickSight 文件中的教學課程。

  2. 將變更儲存至分析。

  3. 選擇發佈儀表板以發佈您建立的視覺效果。

資料分析

相關資源