除了使用[向下切入]或点开超连结的操作来执行撷取List元素之内容的查询步骤外,也可以透过程式码的编辑来达到相同的目的。这时候就一定要懂得List索引值的概念了。
关于List的索引值
基本上,在M语言里的任何一个List,其元素都有一个对应的索引编号,犹如阵列(Array)的注标(subscript)一般,第1个元素的索引编号是0、第2个元素的索引编号是1、第3个元素的索引编号是2、…依此类推,只要凭藉着这个索引编号值,简称索引值,便可以轻鬆取得该元素的内容。所以,延续先前[向下切入]的查询话题,若要撷取List里的元素,则原本透过[向下切入]操作所产生的程式码,其实仅透过程式码的编撰,并不需要经由功能选单操作产生新查询步骤,也能够顺利向下切入深化资料,轻鬆撷取查询内容。而撷取List内容的运算式,其写法是在Lit输出的运算式之后,添增一对由大括号符号所含括的List索引值即可。
例如:
let
来源 = {"苹果","柳丁","葡萄","凤梨","火龙果","香蕉"}{4}
in
来源
所以,当您要萃取出清单里的第5个元素内容 "火龙果" 时,便可透过{4}而取得此List索引值为4的内容。
List里还有List
再接再厉,我们再看看另一个内容丰富的嵌套式清单:
其程式码为:
所谓清单里还有清单,若List里包含了多组也是List资料型态的元素,则每一对大括号所囊括的List,彼此之间亦以逗点作为分隔。这么冗长的程式码实在也不易解读,特别以图解的方式来呈现其巢串的结构。
若要撷取里面的第0元素,则执行步骤的程式码可以写成:
= 清单{0}
查询结果则是「商务智慧」。
若要撷取里面的第2素,则执行步骤的程式码可以写成:
= 清单{2}
查询结果则是「205」。
至于撷取里面的第1元素,执行步骤的程式码为:
= 清单{1}
查询结果也是一个清单,内含5个元素(3个文字资型态、2个清单资料型态)。
若要再往下探勘,从上述的清单里再向下切入深化撷取第0个元素,可以输入以下程式码:
= 清单{1}{0}
查询结果则是「程式设计」。
若要撷取里面的第2素,则执行步骤的程式码可以写成:
= 清单{1}{2}
查询结果则是「资讯服务」。
若要撷取里面的第1素,则执行步骤的程式码可以写成:
= 清单{1}{1}
而此查询结果又是另一个清单,此清单里有7个元素,因此,若要再深入探索该清单里的第2个元素,程式码便是:
= 清单{1}{1}{2}
而此查询结果仍是一个清单,此清单里有6个元素。
所以,若有再向下切入,截取其第5的元素的需求,则可以写成:
= 清单{1}{1}{2}{5}
而此查询结果是一个文字型态的内容「Publisher」。
List的扩展与转换
当点按清单的扩展按钮,会将清单里的每一个元素扩展到资料表里的每一列。而针对List的内容,通常可以转换为Record,也可以转换为Table;List要进行合併时可以使用List.Combine函数;List要进行拆分时可以使用List.Split()函数;List的彙算则可运用List.Sum、List.Average、List.Count、List.Min、List.Max等函数。不过,初学者也不必太慌张,甭急着想要一次学好所有的函数,只要每学会一个不会忘掉一个,就很厉害了!函数的相关资源与说明,可以查访微软官方网站与文件,网路上的一些部落格也都很有帮助,与至于函数的使用时机与应用也是一种经验的累积,就举一反三多学多问啰!
前一篇:<<Power Query三大容器实作系列 - (4/7) 向下切入:深化(撷取)容器里的内容>>
下一篇:<<Power Query三大容器实作系列 - (6/7) Record(记录)的建立编辑与转换>>