Power Query中數(shù)據(jù)分割函數(shù)詳解(1)

Table.SplitColumn(table as?table, sourceColumn as?text,splitter as?function,optional?columnNamesOrNumber as?any,?optional?default as?any,?optional?extraColumns as?any) as?table

參數(shù)1代表需要操作的表;參數(shù)2代表需要分割的文本字段,是一個(gè)文本格式;參數(shù)3是分割操作的函數(shù),可用的分割函數(shù)有9個(gè);參數(shù)4是拆分后生成的列數(shù)或者字段名稱的列表;參數(shù)5是用于替換拆分后為空值的值;參數(shù)6是展開后的類型,可以為列表。

參數(shù)3的操作函數(shù)主要有以下幾個(gè)。

第3參數(shù)分析。

1.?????Splitter.SplitByNothing

返回不拆分且將其自變量作為單元素列表返回。如果不存在后續(xù)參數(shù)的話,則需要添加()作為返回,同時(shí)不進(jìn)行拆分,但是會(huì)改變?cè)瓉淼淖侄蚊Q。

例:

Table.SplitColumn(源,"姓名",Splitter.SplitByNothing())= ? ? ? ? ? ? ? ? ? ? ? ? ? ?

解釋:因?yàn)槭鞘褂昧薙plitter.SplitByNothing函數(shù)參數(shù),所以不做分割處理。

2.?????Splitter.SplitTextByAnyDelimiter

Splitter.SplitTextByAnyDelimiter(delimiters as?list,?optionalquoteStyle as?nullableQuoteStyle.Type,?optionalstartAtEnd as?nullablelogical) as?function

返回以文本列表為任意指定的分隔符將文本拆分文本列表。第1參數(shù)是分隔符列表格式;第2參數(shù)是對(duì)文本類型里csv"的處理,0代表不處理,1代表忽略處理(默認(rèn));第3參數(shù)是在第2參數(shù)為1的時(shí)候?qū)ζ鹗己徒Y(jié)束的判斷,是一個(gè)邏輯值,默認(rèn)為false。


例:

Table.SplitColumn(源,"姓名",Splitter.SplitTextByAnyDelimiter({"張"}))=


Table.SplitColumn(源,"姓名",Splitter.SplitTextByAnyDelimiter({"張","三"}))=

解釋:因?yàn)榈?參數(shù)使用一個(gè)多個(gè)分隔符作為列表,所以張,三2個(gè)字被處理了。1個(gè)分隔符多1列,2個(gè)分隔符多2列,所以會(huì)顯示多2列的字段。


為了方便解說第2參數(shù),我們把數(shù)據(jù)源改下,改成帶"的內(nèi)容


Table.SplitColumn(源,"姓名",Splitter.SplitTextByAnyDelimiter({"張"},1))=

解釋:此時(shí)的Splitter.SplitTextByAnyDelimiter參數(shù)的第2參數(shù)為1,代表忽略處理,也就是認(rèn)定為是文本字符前綴,結(jié)果和不帶"效果一樣。


Table.SplitColumn(源,"姓名",Splitter.SplitTextByAnyDelimiter({"張"},0))=

解釋:此時(shí)的Splitter.SplitTextByAnyDelimiter參數(shù)的第2參數(shù)為0,代表需要進(jìn)行處理,也就是認(rèn)定"為文本字符的一部分內(nèi)容,所以在處理拆分的時(shí)候會(huì)作為字符來處理。


Table.SplitColumn(源,"姓名",Splitter.SplitTextByAnyDelimiter({"李"},1,false))=

Table.SplitColumn(源,"姓名",Splitter.SplitTextByAnyDelimiter({"四"},1,false))=

Table.SplitColumn(源,"姓名",Splitter.SplitTextByAnyDelimiter({"張","李","五"},1,true))=

Table.SplitColumn(源,"姓名",Splitter.SplitTextByAnyDelimiter({"張","李","五"},1,false))=

解釋:通過上面幾個(gè)計(jì)算公式,我們可以看到,在處理第一個(gè)帶"文本的時(shí)候如果是false參數(shù),則不會(huì)進(jìn)行分割處理。這里有人會(huì)有疑問,最后一個(gè)公式第2個(gè)李四我只分列一個(gè)字,另外一個(gè)字呢?實(shí)際上這個(gè)是因?yàn)槲覀儼裈able.SplitColumn函數(shù)的第4參數(shù)給省略了,如果我們加上2的話就是另外的樣子了。


3.?????Splitter.SplitTextByDelimiter

Splitter.SplitTextByDelimiter(delimiter as?text,?optionalquoteStyle as?nullableQuoteStyle.Type) as?function

返回以單個(gè)文本為分割字符將文本拆分為文本列表。第1個(gè)參數(shù)為單個(gè)文本作為分割依據(jù)的關(guān)鍵詞;第2參數(shù)是對(duì)文本類型里csv"的處理,0代表不處理,1代表忽略處理(默認(rèn))。相對(duì)于Splitter.SplitTextByAnyDelimiter而言,只設(shè)定了一個(gè)文本字段來分割。


例:

Table.SplitColumn(源,"姓名",Splitter.SplitTextByDelimiter("張",1),2)=

Table.SplitColumn(源,"姓名",Splitter.SplitTextByDelimiter("李",1),2)=

Table.SplitColumn(源,"姓名",Splitter.SplitTextByDelimiter("張",0),2)=

解釋:如果Splitter.SplitTextByDelimiter的第2參數(shù)為1則作為csv格式,如果有關(guān)鍵詞的話則不會(huì)去處理,如果第二參數(shù)是0則會(huì)處理。


如果有用,動(dòng)動(dòng)你的小手進(jìn)行轉(zhuǎn)發(fā)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容