日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何删除第一张单页_如何用PowerBI导入网页数据

發布時間:2024/1/23 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何删除第一张单页_如何用PowerBI导入网页数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者: 東軍

相信很多朋友被PBI顏值吸引而入了坑,迫切想上手,但往往會卡在數據源環節。本公司數據自己沒權限,外公司數據可望不可及,而網絡社區里提供的練習數據,往往專業性太強,業務邏輯摸不透,分析更是無從下手。

那有什么辦法能方便快捷地找到貼近我們生活的數據嗎?

今天咱們就以隨處可見的榜單類數據為例,如何通過PBI來導入網頁數據,快速建立屬于自己的數據源。


一、導入單頁數據(無參數)

單張網頁的數據導入,其實馬世權老師《從Excel到Power BI商業智能數據分析》一書已有過展示(第97頁的3.3章節)。這里咱們換個網頁,重新走一遍流程,溫故而知新。

這里以當當網圖書暢銷榜為例(一共25頁,每頁20本書。本節僅針對第一頁)。2019年8月暢銷榜網址:http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-month-2019-8-1-1

1. 獲取Web數據

2. 復制粘貼網址,確定

3.選中-轉換

導航器里出現兩張表,很容易就可以判定第一張表就是我們想要的。選中-轉換

4. 數據導入成功

根據分析需要,可以在PBI編輯器里作下一步清洗處理(可參見馬世權老師《從Excel到Power BI商業智能數據分析》第70頁“數據搬運工”章節)

由于網頁數據復雜多變,上述步驟三里還會出現大量重復、殘缺的表格信息。甚至有時候相同網址,分別用PBI和EXCEL來導入,網頁分析結果還有差異。這時就需要耐心仔細,挑選出相對完整的表格數據導入即可。


二、導入多頁數據(僅頁碼參數)

剛才我們成功導入了單頁數據,也熟悉了一遍流程。顯然單頁數據量還達不到數據分析的起步要求,那如何把上述榜單的二十五頁明細全部導入呢?

我們在網頁的頁碼鏈接處前后點幾次,觀察網址變化就會發現,關鍵在于網址最后一個數字。http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-month-2019-8-1-1

在網頁數據導入的所有步驟中,有兩個環節最為重要:

a) 如何判定鏈接與網址的對應關系。

b) 如何判定網址中哪些是關鍵字符串。

這兩個環節,常規網站一般沒什么難度,仔細對比就能找到規律。而有些網頁就不那么好對付了(尤其像一些財經類網站,基金/股票的排行榜,可以自己去摸索一下),需要用額外工具來解析,這個不是咱們今天討論的重點,暫且忽略。

既然找到了關鍵環節,那問題就簡單了。前四個步驟(獲取、復制粘貼網址、選中、導入)與導入單頁數據相同,不再贅述。我們把已導入的數據表重命名(盡量避免出現諸如表1、查詢2、函數3,參數4之類的名稱)。

多頁數據導入的思路:

  • 先設定參數。
    本例固定變化的是頁碼,因此只1需設置一個頁碼參數即可;
  • 再來一個自定義函數;
  • 把參數代入函數;
  • 展開函數,得到最終結果。

1234步驟參照單網頁導入,我們從步驟5開始

5. 創建頁碼參數

6.插入頁碼參數


雙擊第一步驟“源”后面的小齒輪,打開數據獲取界面,切換到“高級”選項。把URL文本的最后一個字符去掉,用剛創建的頁碼參數代替。

7. 創建自定義函數

在初始表上單擊右鍵,選擇“創建函數”菜單。函數名稱隨意。

8. 創建頁碼列表
(目的在于告訴PBI,列表里每項數值都代入頁碼參數,后續調用函數時就能以此生成25個網址字符串,PBI就會根據這些字符串,去自動鏈接相關網址)

1) 新建“空查詢”。

2) 在公式欄里輸入“= List.Numbers(1,25,1)”,PBI將生成一個等差數列。其中第一個“1”為起始數字,第二個“25”為尾數,第三個“1”是差額。

3) 在新列表的標題欄里右鍵“到表”,將列表轉換為表(公式欄里的“Table.FromList”是自動生成的)。

4) 將查詢名和列表標題欄重命名,方便后續操作辨識。

5) 將該列數據類型轉換為“文本”(對應上述步驟5的參數類型),數字便自動靠左對齊。

9. 調用自定義函數

1) 仍然選中“頁碼列表”,點擊“添加列-調用自定義函數”,按下圖所示設定。

2) 忽略“隱私級別”。

3) 經過數據加載,結果終于顯現。25個頁碼,每行對應了一個Table,每個Table里都有相應的二十條數據。隨意點擊一個Table就能看到。

10. 展開函數

點擊新列右上角符號,即可展開所有25行共計500條數據。如果大家覺得“Column”太多容易混淆,那就直接在步驟4把數據先清理好,保留或刪除哪幾列,重命名并指定數據類型等。

雖然只有10個步驟,但對初學者來說,可能操作一趟下來還是一頭霧水。

咱們最后再來總結一下。對于多頁數據的導入,可以看作中學生列方程式。

1) 先設未知數x(第五步創建參數)

2) 再列方程y=…x…(第七步創建自定義函數)

3) 把x可能出現的值全部寫出來(第八步創建頁碼列表)

4) 把每個x的值代入方程,算出y值(第九步調用自定義函數)

真正的掌握離不開大量練習,只有實操才能進步。除了當當網,再給大家幾個網址來練習:

豆瓣電影榜單:https://movie.douban.com/top250

豆瓣音樂榜單:https://music.douban.com/top250

豆瓣讀書榜單:https://book.douban.com/top250

全球影史票房榜:https://www.boxofficemojo.com/alltime/world/

國內居民消費價格指數(CPI):http://data.eastmoney.com/cjsj/cpi.html


三、導入更多數據(包含兩個以上參數)

兩個或兩個以上參數的情況,原理也一樣。本節將提供兩套方案,建議初學朋友把兩種方法多操練幾次。熟悉的目的不是死搬硬套,而是今后遇到陌生情況,能多一條思路。很多從未碰到過的棘手問題,能開辟新思路的畢竟是少數大咖,咱們普通人一般都是把舊思路老經驗多結合幾次,基本也能解決。

這回我們拿起點中文網的“原創風云榜”來做演示。

https://www.qidian.com/rank/yuepiao?style=2&page=1

仔細觀察這個頁面,單就“原創風云榜”就有四個參數:年、月、分類、頁碼。

本節我們只考慮“分類”和“頁碼”兩者組合,年月參數留給各位自己演練實操。只要熟悉了兩個參數的導入流程,參數再加幾個也沒多大難度。

分類共有十四個,每個分類有兩頁。為了便于對比,我把十四個分類的URL都復制到一起:

這樣一看就很清楚了,URL中關于頁碼的信息是“page=”,分類的信息是“chn=”。既然參數確定了,那二話不說,動手干起來。

實操啦,跟進腳步,同志們!

方案一

1. 獲取Web數據

2. 復制粘貼網址,確定

3. 選取表格,點擊“轉換數據”

4. 數據導入成功后處理

稍微做一些整理:刪除最后一列“操作”,把第二列“類別”中的豎括號“「」”替換掉,“表1”重命名為“初始表”。

5. 創建頁碼參數和分類參數
(參數“類型”必須設為“文本”)

6. 插入URL字符串

回到初始表,將兩個參數插入URL字符串(雙擊第一步驟“源”后面的小齒輪,打開數據獲取界面,切換到“高級”選項。把URL文本中分類和頁碼數值,用剛創建的兩個參數代替)

7.創建自定義函數

在初始表上單擊右鍵,選擇“創建函數”菜單。函數名稱隨意。

8. 創建頁碼列表和分類列表

(與第二章節相同,不再重復截圖)新建“空查詢”,頁碼列表公式“= List.Numbers(1,2,1)”,分類列表公式“= List.Numbers(1,22,1)”。本步驟有三個動作千萬別忘:查詢轉換到表;數據類型轉換成文本;標題欄重命名“PageList”和“Catalog”。

這兒有個問題。十四個分類數值明明不連續,為什么我在這兒要用公式來生成連續數值。

其實我就是想偷懶。對于參數的不連續數值,可以用“輸入數據”來一個個手動輸入。我嫌麻煩,不如自動生成連續數值,在后續選取步驟中,把無用數值前復選框的勾去掉即可。

9. 調用自定義函數

(本步驟是重點,多參數與單參數的最大不同之處,就在這一步)

如果按第二章調用函數的方法,就會發現問題所在。由于存在2個參數,因此調用自定義函數過程中,必須要同時安置兩個參數。但無論在“頁碼列表”還是“分類列表”上調用,對話框里都只出現一個參數選項,這該如何是好?

回顧前面提到的單參數思路,我們把參數當作x,自定義函數看作y,把x的每一個實例數值代入函數,y就能得到一個URL字符串。本章的雙參數要實現同樣效果,是不是就等同于實現雙參數的笛卡爾積呢?

思路有了,那就動手。在“分類列表”上添加自定義列,列公式為“=頁碼列表”。展開自定義列,得到了我們想要的結果。這時就可以把無用的分類去掉。

10. 展開函數

此時再在“分類列表”上調用自定義函數,便水到渠成。

至此,雙參數網頁數據的導入操作就完成了。有興趣的朋友可以自己加入年和月參數繼續折騰。

方案二

第二種方案,不用事先導入數據,不用預先設置參數,也不用自定義函數。僅需幾步DAX便能實現,簡單粗暴。

1. 創建分類列表
此處截圖從簡,詳情可以參考前面章節。

1) 新建“空查詢”

2) 輸入公式“= List.Numbers(1,22,1)”

3) 轉換查詢到表

4) 數據類型設為“文本”

5) 標題欄重命名為“分類”

2. 自定義列“起始頁碼”
前面我們說過,分類和頁碼列表的目的是為了實現分類和列表數值的笛卡爾積。為了實現這個效果,就需要先添加兩個臨時列。自定義列“起始頁碼”,將該列數據類型設為“整數”。

3. 自定義列“結尾頁碼”

為什么要添加兩個臨時列?因為我們想通過M語言的Number.From公式,來實現起始頁到結尾頁的自動填充。同理,在日期場景中,也可以用該公式來填充起始到結束日期之間的每一天。

4. 自定義列“頁碼”


這里公式“={Number.From([起始頁碼])..Number.From([結尾頁碼])}”不是DAX,而是M語言,注意大小寫敏感。公式里的列名稱,只需在右側“可用列”里雙擊即可,不需手動輸入。

5. 展開“頁碼”列,點擊“擴展到新行”

6. 完成笛卡爾積

將“頁碼”列數據類型改為“整數”;將“分類”列無關數值去掉勾選;刪除“起始頁碼”和“結尾頁碼”兩個臨時列。笛卡爾積就完成了。

7. 自定義列“URL”

這里我們也用了M語言,注意大小寫敏感。公式:

Web.Page(Web.Contents("https://www.qidian.com/rank/yuepiao?style=2&chn="&[分類]&"&page="&[頁碼]))

8. 展開URL列,僅保留Data勾選。確定后發現還有Table在里面,那就繼續展開。第二次展開便得到了最終結果,稍做清理,便大功告成。

是不是眼前一亮?明明八個常規步驟就能解決的問題,非要在前面章節嘮叨那么多,小編腦子撞墻了嗎?

好吧,你們人多嘴多拳頭硬,小編嘴軟手軟嘰嘰軟,拼不過你們。不過我還是要辯解一番,或許在PBI導入網頁數據這塊,確實光憑幾句DAX和M公式就能快速實現要求,但咱們的目的是什么?前面也講過,是為了多條思路嘛,預設參數函數這種操作,摸透性格捋順脾氣,或許其他場景就能派上大用處。


作者介紹:

總結

以上是生活随笔為你收集整理的如何删除第一张单页_如何用PowerBI导入网页数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。