99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀干貨丨Power Query 數(shù)據(jù)類型及數(shù)據(jù)結(jié)構(gòu)
干貨丨Power Query 數(shù)據(jù)類型及數(shù)據(jù)結(jié)構(gòu)
2018-07-12
收藏


干貨丨Power Query 數(shù)據(jù)類型及數(shù)據(jù)結(jié)構(gòu)

查詢?cè)鰪?qiáng)版(Power Query)是Excel Power BI組件中用于數(shù)據(jù)導(dǎo)入、數(shù)據(jù)整合以及數(shù)據(jù)處理的插件工具。適用于Excel 2010以上版本,在Excel 2010以及Excel 2013中需要下載插件安裝加載后使用,在Excel 2016版本中Power Query被內(nèi)置在數(shù)據(jù)選項(xiàng)卡的獲取和轉(zhuǎn)換工具集中。在Power Query幫助下,Excel不再受限于數(shù)據(jù)的行數(shù)限制,可以快速關(guān)聯(lián)并整合多種來自不同數(shù)據(jù)源的數(shù)據(jù)信息,可以像數(shù)據(jù)庫(kù)一樣對(duì)表結(jié)構(gòu)數(shù)據(jù)進(jìn)行加工整理。Power Query令Excel從制表工具華麗變身為數(shù)據(jù)綜合處理平臺(tái)......


晦澀難懂的IT語(yǔ)言到此為止,說點(diǎn)好懂的就是使用Power Query可以幫助各位早干完活兒早回家、可以幫助大家在團(tuán)隊(duì)中脫穎而出升職加薪。未來你說你不懂Power Query,可能在“表圈”就混不下去了。


在眾多Power Query的使用者中也是存在鄙視鏈的:


本系列文章主要向大家系統(tǒng)介紹鄙視鏈中上邊兩層關(guān)于M函數(shù)的內(nèi)容。至于Power Query的基本操作相關(guān)內(nèi)容,還請(qǐng)大家通過度娘或是報(bào)名我的Excel BI相關(guān)課程了解學(xué)習(xí)。
 M函數(shù)是Power Query專用的函數(shù)語(yǔ)法,使用M函數(shù)可以幫助我們自由靈活地完成數(shù)據(jù)導(dǎo)入、整合、加工處理等任務(wù)工作。Power Query的界面操作只能發(fā)揮其全部能力的20%,剩余80%的能力都要通過M函數(shù)來實(shí)現(xiàn)。
 M函數(shù)在使用方法上與Excel的基本函數(shù)功能完全不同,M函數(shù)更像是一門專用于數(shù)據(jù)處理的編程語(yǔ)言,學(xué)習(xí)M函數(shù)首先我們要了解它的基本表達(dá)式、數(shù)據(jù)類型以及數(shù)據(jù)結(jié)構(gòu)。下邊就著重為大家介紹這三方面內(nèi)容。
 ※大家可以在Power Query的查詢編輯器內(nèi)新建空查詢,并在視圖選項(xiàng)卡內(nèi)的高級(jí)編輯器中復(fù)制案例代碼了解每個(gè)案例代碼的執(zhí)行結(jié)果。
※  //符號(hào)為M語(yǔ)句的注釋符
M函數(shù)基本表達(dá)式:
let…in…結(jié)構(gòu):
let用于封裝計(jì)算結(jié)果,并為計(jì)算結(jié)果命名。
in用于顯示結(jié)果
例:

let  
   Source = Text.Proper("hello world")  
in  
   Source
解說:
通過let語(yǔ)句將Text.Proper(“hello world”)函數(shù)的計(jì)算結(jié)果封裝到名叫Source的變量中,再通過in語(yǔ)句顯示Source變量的內(nèi)容“hello world”。
M函數(shù)基本變量:

自定義函數(shù):
函數(shù)名 = (參數(shù)1,參數(shù)2,參數(shù)3……) => 函數(shù)運(yùn)算表達(dá)式
※通過調(diào)用函數(shù)得到的函數(shù)返回值稱為函數(shù)值
例:
let  
    MyFunction = (parameter1, parameter2) =>(parameter1+ parameter2) / 2  
    Final = MyFunction(2,4)
in  
    Final
解說:
 以上代碼執(zhí)行結(jié)果為3,先在let中創(chuàng)建名為MyFunction的自定義函數(shù),函數(shù)有parameter1和parameter2兩個(gè)參數(shù),函數(shù)的運(yùn)算表達(dá)式為(parameter1 + parameter2) / 2,之后在let中使用2與4兩個(gè)參數(shù)調(diào)用MyFunction函數(shù),MyFunction函數(shù)將運(yùn)算結(jié)果返回給變量Final,最后在in中顯示Final變量的內(nèi)容3。
結(jié)構(gòu)化數(shù)值
1. 列表(List):
列表是擴(kuò)在花括號(hào)中的一組數(shù)據(jù),列表中每個(gè)數(shù)據(jù)都有屬于自己的序號(hào)以便自己能夠被檢索到,列表中的數(shù)據(jù)序號(hào)從0開始按照排列順序依次整數(shù)遞增,大列表內(nèi)還可以嵌套子列表、記錄等。花括號(hào)除了用來括起列表內(nèi)的所有數(shù)據(jù)還用來指定列表內(nèi)數(shù)據(jù)的序號(hào),通過指定數(shù)據(jù)序號(hào)可以從列表內(nèi)找到并獲取所需的數(shù)據(jù)值。

2. 記錄(Record):
記錄用來定義字段和給字段賦值,一個(gè)字段字段名以及字段內(nèi)的值組成,字段名是唯一的文本值,是字段的標(biāo)識(shí)符。字段名可以不用引號(hào)引用,字段名有兩種表達(dá)形式:
> 不加""的表達(dá)形式、例如OrderID
> 加#和""的表達(dá)形式、例如#"Today's data is:"
 記錄中的內(nèi)容寫在[]括號(hào)內(nèi),[]括號(hào)同樣用于在記錄中取特定字段的值。
例1:定義字以及顯示記錄內(nèi)所有內(nèi)容
let Source =   
   [  
         OrderID = 1,   
         #"CustomerID" = 1,   
         Item = "Fishing rod",   
         Price = 100.00  
   ]  
in Source


例2:定義字以及顯示記錄內(nèi)[Item]字段的值

let Source =  
   [  
         OrderID = 1,   
         #"CustomerID" = 1,   
         Item = "Fishing rod",   
         Price = 100.00  
   ]  
in Source[#"CustomerID"] //equals 1


3. 表(Table):
表是由行列數(shù)據(jù)構(gòu)成的,可以使用隱式或顯示方式定義字段(列)的數(shù)據(jù)類型。使用#table建表時(shí),可以使用列表或者記錄來定義列名,并使用嵌套列表來定義表中的數(shù)據(jù),嵌套列表的大列表內(nèi)包含所有定義單行用的子列表,而每個(gè)子列表則用來定義一行數(shù)據(jù)?;ɡㄌ?hào){}可以用來索引查找指定行的數(shù)據(jù)。
 
例1:隱式字段

let  
 Source = #table(   
   {"OrderID", "CustomerID", "Item","Price"},   
     {   
         {1, 1, "Fishing rod", 100.00},   
         {2, 1, "1 lb. worms", 5.00}  
     })  
in  Source


例2:顯示字段

let  
   Source = #table(  
   type table [OrderID = number, CustomerID = number, Item = text, Price = number],   
       {   
                {1, 1, "Fishing rod",100.00},   
            {2, 1, "1 lb. worms", 5.00}  
       }  
   )  
in  Source
例3:建表后取表中第一行數(shù)據(jù)
let  
   Source = #table(  
   type table [OrderID = number, CustomerID = number, Item = text, Price =number],   
       {   
             {1, 1, "Fishing rod", 100.00},   
             {2, 1, "1 lb. worms", 5.00}  
        }  
   )  
in Source{1}
其他數(shù)據(jù)結(jié)構(gòu)案例:
數(shù)據(jù)結(jié)構(gòu)中可以包含任意M值,以下為一些案例:

例1:復(fù)合數(shù)據(jù)結(jié)構(gòu)的列表
let  
   Source =   
{  
  1,    //數(shù)值
  "Bob",   //文本
  DateTime.ToText(DateTime.LocalNow(), "yyyy-MM-dd"),   //函數(shù)值
  [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price =100.0]   //記錄
}  
in   
   Source

例2:包含子列表的記錄
let  
   Source = [CustomerID = 1, Name = "Bob", Phone ="123-4567", Orders =   
       {  
             [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price =100.0],  
           [OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price =5.0]  
        }]  
in   
   Source


 if表達(dá)式:
if表達(dá)式通過對(duì)邏輯條件進(jìn)行判斷來對(duì)兩個(gè)表達(dá)式進(jìn)行選擇。

例:
if 2 > 1 then
    2 +2   
else   
    1 +1

解說:

在上述案例中,因?yàn)榕袛鄺l件2>1的邏輯值為真,所以執(zhí)行第一個(gè)表達(dá)式2+2,所以執(zhí)行結(jié)果為4,如果判斷條件改為2<1,則其判斷條件的邏輯值為假,所以會(huì)執(zhí)行第二個(gè)表達(dá)式1+1,此時(shí)的執(zhí)行結(jié)果為2.
Power Query 是 Power BI 系列插件中的一款重要插件,用以彌補(bǔ)傳統(tǒng) Excel 功能在數(shù)據(jù)處理方面的不足,如果你對(duì)Excel Power BI黑科技感興趣,歡迎參加由微軟MVP李奇老師主講CDA數(shù)據(jù)分析員課程。

報(bào)名:

掃描二維碼或點(diǎn)擊閱讀原文

掃描二維碼報(bào)名參加


數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }