powerquery實現(xiàn)多文件合并以及模型分享后的路徑配置

1背景介紹

在進行數(shù)據(jù)處理時弥咪,一般獲取的數(shù)據(jù)有兩種:

1)單個文件,很多情況下是結(jié)構(gòu)不同的單個問題冷尉,需要逐個加載處理锈嫩;

2)多個結(jié)構(gòu)相同的單個文件受楼,需要對多個文件進行合并處理;

針對兩張形式呼寸,pq都能通過可視化方式處理,尤其的多個結(jié)構(gòu)相同的單個文件猴贰,可以通過加載文件夾的方式進行自動合并对雪,會自動生成查詢和函數(shù)組進行合并。而在現(xiàn)實進行數(shù)據(jù)處理中又有兩個痛點問題:

1)pq模型做好以后米绕,同步給同事需要修改加載路徑瑟捣,如果加載的數(shù)據(jù)來源較多馋艺,會非常麻煩。

2)文件夾方式加載數(shù)據(jù)會自動生成函數(shù)和查詢迈套,而且是每加載一個文件夾就會出現(xiàn)一次捐祠,顯得很亂;

本文將重點解決以上兩個問題桑李。

2不同終端數(shù)據(jù)源加載的便捷方式

說道便捷踱蛀,我們第一個想到的肯定是把數(shù)據(jù)拷貝過來,就能自動識別贵白,這是最最最便捷的方式率拒,什么都不用做就OK了,充分體現(xiàn)出自動化智能化禁荒。這里能想到的這種自動化有兩種方式:

1)真正的自動猬膨,不管數(shù)據(jù)源放哪里,都能自動找到呛伴,幾乎不可能勃痴,雖然能用搜索的方式實現(xiàn)部分,但是如果出現(xiàn)有相同文件名的文件時就傻眼了热康;

2)利用相對路徑實現(xiàn)沛申,所謂相對路徑就是相對你操作的文件的路徑,一般是將數(shù)據(jù)源和模型文件放在一個文件夾褐隆,通過相對路徑來獲取數(shù)據(jù)源污它,唯一需要注意的是需要在同一個文件下,如果分開就不自動了庶弃。很可惜衫贬,pq不支持相對路徑,具體原因未知歇攻。

既然自動無法實現(xiàn)固惯,而手動又會很麻煩,所以使用半自動方式實現(xiàn)缴守。

思路:通過一個表格來配置文件的路徑葬毫,將表格加載到pq,在需要該數(shù)據(jù)時調(diào)用屡穗。

這里的調(diào)用也有兩種方式:

1)創(chuàng)建函數(shù)調(diào)用贴捡,傳入一個需要的參數(shù),通過函數(shù)來獲取需要的數(shù)據(jù)路徑村砂;

2)直接引用烂斋;

在這里就介紹更簡單的直接引用方式。

第一步,新建文件位置的表格汛骂,兩個字段“表名”和“路徑”罕模,需要注意表名不一定是真實的表名,可以自定義帘瞭;


第二步淑掌,將表加載到pq,然后直接在需要的地方引用蝶念;

先看下引用:從深化看引用


可以看到直接引用表中數(shù)據(jù)的方式是“數(shù)據(jù)表名{行數(shù)}[列名]”抛腕,通過這種方式我們可以想到,如果我們的表是固定的祸轮,就能通過該方式獲取路徑兽埃,比如我需要獲取第三行第二列中的路徑,那么可以直接用“= 更改的類型{2}[總路徑]”來獲取适袜。

進一步柄错,如果我們的行排序是混亂的,或者有可能會混亂苦酱,用該方式就很容易出錯售貌,那么該用什么來定位行號呢?這里定義的“表名”列就可以作為依據(jù)疫萤,所以需要表名是唯一的颂跨。 如何通過表名來獲取呢?來看看通過可視化方式加載文件的腳本扯饶。



可以看到根據(jù)唯一標識獲取的方式是“數(shù)據(jù)表名{[列名=”標識”]}[列名]”恒削,根據(jù)這種方式,我們想獲取文件位置中第三行第二列中的路徑可以用“= 更改的類型{[表名="語音導航系統(tǒng)指標日報表2"]}[總路徑]”尾序。


再來看看如何在需要的地方引用:

上面在加載單個文件的腳本中可以看到是直接加載的路徑钓丰,那么這里只用將該路徑直接替換成引用的路徑。




到這里就實現(xiàn)了辦自動的數(shù)據(jù)加載啦每币,發(fā)給同事后只用更改下文件路徑携丁,刷新下數(shù)據(jù),就能實現(xiàn)數(shù)據(jù)的自動加載刷新兰怠。


延伸:

1)看下方截圖梦鉴,很明顯“Name”字段的名稱明顯會有變化,該如何破揭保?


2)如果要加載一個文件中的多個sheet該如何配置肥橙?


3相同結(jié)構(gòu)文件的最優(yōu)合并方式

第一步,按照單個文件的處理方式秸侣,加載并處理一個文件快骗,生成所需要的腳本娜庇;

第二步塔次,將處理單個文件的腳本創(chuàng)建成函數(shù)方篮,函數(shù)名隨意;

這里需要注意励负,如果有多個文件夾數(shù)據(jù)藕溅,每個下面的數(shù)據(jù)結(jié)構(gòu)不同,但是對于加載后的處理方式有相似之處時继榆,則創(chuàng)建的函數(shù)盡可能的能適配所有的文件巾表,這樣能省去創(chuàng)建多個函數(shù)麻煩,如果都是獨立的略吨,則每個文件夾下的數(shù)據(jù)表都需要創(chuàng)建相應的函數(shù)集币。


第三步,修改函數(shù)中的參數(shù)翠忠,這里有一個定位參數(shù)的過程鞠苟,根據(jù)不同的目的來定位,這里的目的是希望其他文件也能像單個文件一樣處理秽之,那么這里就需要傳入其他文件当娱,所以這里的參數(shù)是文件路徑,只要傳入路徑就能進行處理考榨。



這里需要注意我修改了3個地方跨细,前兩個是傳入的文件路徑的參數(shù),第三個是使用了引用的方式河质,也是第二部分介紹中的延伸1的一種解決方式冀惭。

第四步,調(diào)用函數(shù)掀鹅。

函數(shù)已經(jīng)創(chuàng)建成功散休,我們傳入文件路徑就可以調(diào)用生成相應的查詢了。思考一下淫半,如果我有10個相同的表溃槐,我把表的路徑一個一個傳入,就會生成10個查詢科吭,然后將10個查詢追加合并昏滴,就能得到想要的合并數(shù)據(jù)。顯然這種方式還是一個一個手動操作对人,而我們希望的是批量調(diào)用谣殊。如何批量?

先將所有的表放到一個文件夾下牺弄,然后以加載文件夾數(shù)據(jù)的方式加載到pq中姻几;


加載進入后,可以發(fā)現(xiàn)我們需要傳入函數(shù)的file參數(shù)值是FolderPath列和Name兩列的合并值,那么接下來就簡單了蛇捌,直接添加一列抚恒,調(diào)用函數(shù),參數(shù)用FolderPath&Name


然后再刪除其他列络拌,展開表格數(shù)據(jù)即可得到合并的數(shù)據(jù)俭驮。


延伸:

在第四步中,加載文件夾到pq春贸,可以看到加載后也是文件夾路徑混萝,這里就可以使用第二部分介紹的表格配置路徑,然后在此處引用的方式實現(xiàn)半自動化加載啦萍恕。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逸嘀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子允粤,更是在濱河造成了極大的恐慌崭倘,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件维哈,死亡現(xiàn)場離奇詭異绳姨,居然都是意外死亡,警方通過查閱死者的電腦和手機阔挠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門飘庄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人购撼,你說我怎么就攤上這事跪削。” “怎么了迂求?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵碾盐,是天一觀的道長。 經(jīng)常有香客問我揩局,道長毫玖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任凌盯,我火速辦了婚禮付枫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驰怎。我一直安慰自己阐滩,他們只是感情好,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布县忌。 她就那樣靜靜地躺著掂榔,像睡著了一般继效。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上装获,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天瑞信,我揣著相機與錄音,去河邊找鬼饱溢。 笑死喧伞,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的绩郎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼翁逞,長吁一口氣:“原來是場噩夢啊……” “哼肋杖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起挖函,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤状植,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后怨喘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體津畸,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年必怜,在試婚紗的時候發(fā)現(xiàn)自己被綠了肉拓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡梳庆,死狀恐怖暖途,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情膏执,我是刑警寧澤驻售,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站更米,受9級特大地震影響欺栗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜征峦,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一迟几、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧眶痰,春花似錦瘤旨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽因宇。三九已至,卻和暖如春祟偷,著一層夾襖步出監(jiān)牢的瞬間察滑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工修肠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贺辰,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓嵌施,卻偏偏與公主長得像饲化,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子吗伤,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,898評論 2 89
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重復值時吃靠,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,176評論 0 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理足淆,服務發(fā)現(xiàn)巢块,斷路器,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 什么是事件響應鏈 對于ios設備的用戶來說巧号,我們操作手機的方式有三種:觸摸屏幕族奢、晃動設備、通過遙控設施控制設備丹鸿。對...
    Kakarrot閱讀 254評論 0 0
  • 只有行動才能給生活增加力量T阶摺!卜高! 標準流程化 沒有標準就沒辦法衡量一件事的對與錯弥姻,前幾天我們準備了一場茶話會,主要...
    章燕閱讀 2,210評論 0 7