如何在Power Query中獲取數據——表格篇(4)
樣例表格:
(一)根據值大小提取
1. 返回最小值的行
Table.Min(table as table, comparisonCriteria as any, optional default as any) as any
第1參數是需要操作的表;第2參數是需要取值的欄位名;第3參數是如果為空返回賦予的值;如果不為空則返回的是一個record格式,如果為空則返回賦予的值的格式。
例:
Table.Min(數據,"成績")=[姓名="王五",成績=80,學科="英語"]
Table.Min(數據,"姓名")=[姓名="張三",成績=100,學科="數學"]
解釋:排序大小是根據Unicode編碼來確定的,張的Unicode為5f20,李的Unicode為674e,王的Unicode為738b,所以張最小,返回的就是姓名="張三"這條記錄。
=Table.Min(Table.FromValue({}),"Value",{"空表"})={"空表"}
解釋:空表代表沒有記錄的表,但是可以有標題欄位名。Table.FromValue({})生成的就是一個標題欄位為Value的空表;因為第2條件是必選的,所以至少要有一個欄位名才能做匹配,因為Table.FromValue({})返回的是欄位名為Value的空表,所以返回指定值。Table.FromRecords({}),Table.FromList({}),Table.FromColumns({}),Table.FromRows({})也是一樣的,生成的是不具備標題欄位的空表。
Table.Min(數據,List.Last(Table.ColumnNames(數據)))= [姓名="張三",成績=100,學科="數學"]
解釋:返回最後一個欄位標題的最小值的記錄。Table.ColumnNames獲取表的標題生成一個list,也就是{"姓名","成績","學科"}的列表,我們又用List.Last去獲取最後一項也就獲得"學科"的欄位名文本,最後通過學科進行比較,語的Unicode編碼是8bed,數的Unicode編碼是6570,英的編碼是82f1,我們獲取最小的值,也就是學科=數學這個的記錄。
2. 返回最大值的行
Table.Max(table as table, comparisonCriteria as any, optional default as any) as any
第1參數是需要操作的表;第2參數是需要取值的欄位名;第3參數是如果為空返回賦予的值;如果不為空則返回的是一個record格式,如果為空則返回賦予的值的格式。
例:
Table.Max(數據,"成績")=[姓名="張三",成績=100,學科="數學"]
Table.Max(數據,"姓名")=[姓名="王五",成績=80,學科="英語"]
解釋:排序大小是根據Unicode編碼來確定的,張的Unicode為5f20,李的Unicode為674e,王的Unicode為738b,所以王最大,返回的就是姓名="王五"這條記錄。
Table.Max(Table.FromValue({}),"Value",{"空表"})={"空表"}
解釋:空表代表沒有記錄的表,但是可以有標題欄位名。Table.FromValue({})生成的就是一個標題欄位為Value的空表;因為第2條件是必選的,所以至少要有一個欄位名才能做匹配,因為Table.FromValue({})返回的是欄位名為Value的空表,所以返回指定值。Table.FromRecords({}),Table.FromList({}),Table.FromColumns({}),Table.FromRows({})也是一樣的,生成的是不具備標題欄位的空表。
Table.Max(數據,List.Last(Table.ColumnNames(數據)))= [姓名="張三",成績=100,學科="數學"]
解釋:返回最後一個欄位標題的最小值的記錄。Table.ColumnNames獲取表的標題生成一個list,也就是{"姓名","成績","學科"}的列表,我們又用List.Last去獲取最後一項也就獲得"學科"的欄位名文本,最後通過學科進行比較,語的Unicode編碼是8bed,數的Unicode編碼是6570,英的編碼是82f1,我們獲取最小的值,也就是學科=數學這個的記錄。
如果有用,動動你的小手進行轉發。

