學習Json檔案格式與實作系列:(4/5)Power Query匯入Json實務範例1

前面為大家普科了JSON檔案格式的架構,並不是要讓大家無中生有的去撰寫JSON格式資料檔,因為,可以轉換與解析JSON檔案格式的工具及應用程式很多,筆者只是希望大家至少能看得懂簡單的JSON檔案格式,因為,未來勢必會有很多接觸JSON檔案格式的機會。而後來又跟大家講解了Power Query環境下的M語言,尤其是三大容器List、Record、Table,筆者的目的也不是要讓大家使用這些容器來建立資料,而是在使用Power Query匯入各種類型的外部資料來源時,譬如:JSON檔案、XML檔案,您就會很容易理解所匯入的資料元素是什麼,包含了哪些物件、含括了什麼成分,以及如何去展開與剖析。

Step By Step實作

在此要為大家演繹的資料來源是正一份記載員工基本資料的JSON檔案,其內容是架構是記錄(Record)的集合,而每一份清單元素代表著是分公司的成員,也正是一筆筆的資料記錄。實作範例檔案是[員工基本資料.JSON],從這份JSON格式的文字檔內容中不難看出,丰雅食品是一個清單,裡面包含了多個物件,每個物件都有12組「鍵值對」(Key-Value Pairs),代表著"工號"、"姓名"、"性別"、"部門"、"出生日期"、"受雇日期"、"身份證字號"、"縣市"、"鄉鎮區"、"地址"、"郵遞區號" 及"眷屬人數" 等資料值。(請事先下載實作檔案)

這是典型的JSON檔案格式

在Excel環境下點按[資料]索引標籤裡[取得資料]命令按鈕,從展開的下拉式功能選單中點選[從檔案]功能選項,並在從副選單中點選[從JSON]功能選項,即可透過Power Query查詢編輯器來解析並轉換這份JSON檔案。

選擇本文所列舉的範例[員工基本資料.JSON]檔案。

進入Power Query查詢編輯器,從查詢結果中可以看出,轉換[員工基本資料.JSON]的內容包含了兩筆資料記錄,每一筆記錄的內容是屬於List清單容器的型態。

我們點第一個記錄[丰雅食品]的內容List右側的空白處,可以立即與預覽此List的內容,也就是在結果窗格的下半部,看到此List內容的元素是多筆資料記錄(Record)容器。想必第二個記錄[全泉實業]的List內容,也是包含多筆資料記錄(Record)的元素。此時,可以透過資料轉換的操作,將此查詢結果(記錄資料型態),轉換成資料表型態,如此才能在稍後展開List裡的每一個元素。因此,此刻請點按[記錄工具]底下[轉換]索引標籤裡的[成為資料表]命令按鈕。

順利將剛剛的兩筆資料記錄查詢結果,轉換成包含2筆資料記錄的資料表,此資料表中,[Name]資料行的內容為記錄名稱、[Value]資料行的內容為記錄的值,也就是List容器。此時,我們可以點按[Value]資料行的展開按鈕,將此資料行的內容全部展開。

在展開的功能選單中點選[展開至新資料列]功能選項。

由於前面提過此例[Value]資料行的內容是List容器,而每一個List容器裡的元素是多筆資料記錄(Record)容器,因此,展開至新資料列後的各個元素即為一筆筆的資料記錄(Record)容器。

此例展開後便形成了2個資料行、46個資料列

而這裡的每一個料記錄(Record)容器,便記載著JSON所描述的物件,即12組「鍵值對」(Key-Value Pairs),所以,點按[Value]資料行代名稱有冊的展開按鈕,便可以看到"工號"、"姓名"、"性別"、"部門"、"出生日期"、"受雇日期"、"身份證字號"、"縣市"、"鄉鎮區"、"地址"、"郵遞區號" 及"眷屬人數" 等內容(也就是每一個記錄都儲存著12個資料欄位的值)的勾選。

此例我們選取所有的資料行,並取消[使用原始資料行名稱做為前置詞]核取方塊的勾選。

隨即可以在查詢結果窗格看到,這份JSON2檔案最終轉換成13個資料行、46個資料列的資料表。也就是分別隸屬於[丰雅食品]與[全泉實業]這兩家公司的46位員工基本資料。此時,可以點按[常用]索引標籤底下[關閉並載入]命令按鈕的上半部按鈕,將此查詢結果以資料表的格式載入至預設的輸出位置(Excel工作表)。

回到Excel操作畫面,即可看到新增的工作表上呈現了剛剛藉由Power Query查詢編輯器的協助,所匯入與轉換、解析的JSON檔案內容。

 

(下載實作檔案)

系列文章

(1/5) 物件的概念與結構 
(2/5) 再談JSON的架構  
(3/5) Power Query的容器  
(4/5) Power Query匯入Json實務範例1  
(5/5) Power Query匯入Json實務範例2