-
变更某列里面的数据,比如将TEXT型的日期+时间数据切成日期数据
FunctionName = Table.TransformColumns(Sorce, {"变的更列名", each Text.Start(_, 10)}),
-
添加新的列
FunctionName = Table.AddColumn(Source, "新的列名", each [已有的列名] * 2, type number)
-
用于将某列里面的8位字符型日期转换成yyyy/MM/dd格式
FunctionName = Table.AddColumn(Source, "新的列名", each Text.Middle([yyyymm的年月列], 1, 4) & "/" & Text.Middle([yyyymm的年月列], 5, 2) & "/01", type text),
置换值,将某(几)列的值置换成另外的值,如,将null置换成0
置换值= Table.ReplaceValue(Source, null, 0, Replacer.ReplaceValue, {"置换列的名字"}),
其中
null
是被置换的值,0
是置换值
也可以像下面这样,同时置换若干列置换值 = Table.ReplaceValue(Source, null, 0, Replacer.ReplaceValue, {"置换列的名字1", "置换列的名字2", "置换列的名字3"})
-
将日期列里的年向后推一年
置换列 = Table.TransformColumns(Source, {{"日期列", each DateTime.ToText(Date.AddYears(DateTime.FromText(_), 1), "yyyy-MM-ddTHH:mm:ss")}}),
-
表连接,将两个表连接在一起,相当于SQL的
LEFT JOIN
,INNER JOIN
表连接 = Table.NestedJoin(表1的名字, {"表1的链接键1", "表1的链接键2"}, 表2的名字, {"表2的链接键1", "表2的链接键2"}, "连接之后新的列名", JoinKind.LeftOuter),
-
删除重复数据(获取唯一值)
重複削除 = Table.Distinct(Source, {"去重的列名1", "去重的列名2"})
-
表展开,将连接在一起的表展开,一般
Source
是"表连接"
Expand_FROM = Table.ExpandTableColumn(Source, "连接之后新的列名", {"需要展开的列1", "需要展开的列2", "需要展开的列3"}, {"将需要展开的列展开之后的名字1", "将需要展开的列展开之后的名字2", "将需要展开的列展开之后的名字3"}),
-
M使用if根据条件向列输出组合值。下面的示例,在表中增加一列,这列的值如果是条件1,则输出then后面的组合,如果不符合条件1,则输出else后面的组合
如何使用if = Table.AddColumn(Source, "新增列名", each if Text.From(Date.Year([日期的列名])) = "2022" then "二零二二" & [组合值的列名] else if Date.Year([日期的列名]) = Date.Year(DateTime.LocalNow()) then "今年" & [组合值的列名] else Text.From(Date.Year([日期的列名])) & [组合值的列名] ,type text)
-
在if条件里面写函数的方法
重置值 = Table.AddColumn(Source, "新列名", each if [条件列1] = "条件1" or [条件列2] = "条件3" then let 随机数 = Number.Mod(Number.RoundDown(DateTime.LocalNow() * 1000) , List.Count(数组1)), 数组下标 = Number.RoundDown(Number.RandomBetween(0, List.Count(数组1))) in 数组1{数组下标} else let 随机数 = Number.Mod(Number.RoundDown(DateTime.LocalNow() * 1000) , List.Count(o数组2)), 数组下标 = Number.RoundDown(Number.RandomBetween(0, List.Count(数组2))) in 数组2{数组下标} , type text )
-
利用if里面写函数的方法,建立新列,并根据条件随机填入数据
数据列1 = {"A", "B", "C", "D"}, 数据列2 = {"AA", "BB", "CC", "DD"}, 数据列3 = {"AAA", "BBB", "CCC", "DDD"} 根据条件赋值列 = Table.AddColumn(Source, "新列名", each if [条件列1] = "条件1" or [条件列1] = "条件2" then let 重置随机值 = Number.Mod(Number.RoundDown(DateTime.LocalNow() * 1000) , List.Count(数据列1)), 取值 = Number.RoundDown(Number.RandomBetween(0, List.Count(数据列1))) in 数据列1{取值} else if [数据列1] = "条件1" and [数据列2] = "条件2" then let 重置随机值 = Number.Mod(Number.RoundDown(DateTime.LocalNow() * 1000) , List.Count(数据列2)), 取值 = Number.RoundDown(Number.RandomBetween(0, List.Count(数据列2))) in 数据列2{取值}, type text else let 重置随机值 = Number.Mod(Number.RoundDown(DateTime.LocalNow() * 1000) , List.Count(数据列3)), 取值 = Number.RoundDown(Number.RandomBetween(0, List.Count(数据列2))) in 数据列3{取值}, type text )
-
过滤掉非数字型的值
过滤值 = Table.SelectRows(Source, each Value.Is(Value.FromText([目标列]), type number)),
-
多个if条件一起判断
if List.Contains({"条件1","条件2","条件3"}, [目标列]) then "值1" else if List.Contains({"条件4","条件5","条件6"}, [D目标列]) then "值2" else null
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme