最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲

[公告2019/01/08] 請注意:我再次重申,部落格文章的程式碼,是要提供各位參考與學習,一旦網頁改版請自行修改,別要求東要求西要我主動修改,你們用我寫東西賺錢了、交差了,請問有分我一杯羹嗎?既然賺錢沒分我,請問有什麼理由要求我修改,如果沒能力改,就花錢來找我上課。

[公告2019/12/01] 若各位有 Excel VBA 案子開發需求,歡迎與我聯繫,可接案處理。

[公告2020/05/22] 頁面載入速度慢,起因為部分JS來源(alexgorbatchev.com)失效導致頁面載入變慢,目前已做調整,請多見諒。

2019年11月8日 星期五

Power BI Desktop 匯入資料(1) JSON 資料 :匯入三大法人買賣金額統計表

Power BI Desktop  一個可用來連結資料、轉換資料、資料視覺化與件列資料模型的應用軟體,有興趣的朋友可至微軟 Power BI Desktop 官網下載安裝,現在就來介紹說明如何透過Power BI Desktop 將網路上的JSON檔案下載來使用。
以證交所的 三大法人買賣金額統計表 為例,來做說明。

Step 1. 點選「其他」。

Step 2. 輸入 "JSON",點擊 "JSON",再點擊 "連結"。

Step 3. 輸入 三大法人買賣金額統計表 JSON的網址 https://www.twse.com.tw/fund/BFI82U?response=json&type=day,再點擊 "開啟"。

Step 4. 匯入資料後,在 "data" 欄位,滑鼠右鍵,點擊 "成為資料表"。

Step 5. 再次在 "data" 欄位,滑鼠右鍵,點擊 "向下切入",或點擊「list」。

Step 6. 在 "清單" 欄位,滑鼠右鍵,點擊 "到表格"。

Step 7. 點擊 "確認"。

Step 8. 在 "Column1" 欄位,點擊按鈕,再點擊 "擷取值..."。

Step 9. 選擇 "冒號",再點擊 "確定"。

Step 10. 點擊 "分割資料行",選擇 "依分割符號"。

Step 11. 選擇 "冒號",最後點擊 "確定"。

最後就會見到三大法人買賣金額統計表資料。

Step 12. 修改 Column 欄位名稱,以利後續標頭欄位合併。

Step 13. 右側點擊 "來源",再點擊 "fields",滑鼠右鍵選擇 "加入成為新查詢"。

Step 14. 滑鼠右鍵選擇 "到表格"。

Step 15. 點擊 "確定"。

Step 16. 點擊 "轉置"。

Step 17. 確認Column欄位名稱與 "BFI82F[1]" 相同就可以準備進行表格合併。

Step 18. 點擊 "附加查詢",概念等同於Python 的Pandas的concat功能。

Step 19. 選擇 "BFI82F[1]" 資料表。

Step 20. 點擊 "使用第一個資料列作為標頭"。

Step 21. 點擊 "關閉並套用"。

進行套用查詢變更。

最後就會見到三大法人買賣金額統計表資料。

我們可以在「Power Query 編輯器」透過開啟「進階編輯器」分別查看"BFI82F[1]"、"fields" 可察看上面所有操作步驟所轉換而成的「M語言」程式碼。
BFI82F[1]

fields

BFI82F[1]的程式碼經簡化後。
let
    json = Json.Document(Web.Contents("https://www.twse.com.tw/fund/BFI82U?response=json&type=day")),
    data = json[data],
    table = Table.FromList(data, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    rowdata = Table.TransformColumns(table, {"Column1", each Text.Combine(List.Transform(_, Text.From), ";"), type text}),
    alldata = Table.SplitColumn(rowdata, "Column1", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Column1", "Column2", "Column3", "Column4"})
in
    alldata

使用以上M程式碼操作,需要設定網站認證才能正常連線。


以上的概念跟Excel操作概念相同,如下:
  1. Power BI的DAX函數操作就同等於在Excel上的函數操作。
  2. Power Query的操作等同於Excel錄製巨集,產生對應的 「M語言」程式碼。
  3. Power Query產出的「M語言」程式碼,等同於VBA程式碼。

沒有留言:

張貼留言