[已解决] 在每个未展开的table中增添一个自定义列

  [复制链接]
Z.spike | 2021-2-19 00:06:14 | 显示全部楼层
用Table.TransformColumns(分组的行,{"计数",(x)=>Table.AddColumn(x,"新列",each try x[值]{[属性]-2} o ...


这个就是技术竞赛里面的20180113的题 我只是判断这种是否用PQ做会更合适但这种需要高度的逻辑
每一个item进行双层判定 然后还要把所有的item汇总出来苦恼半天 终于搞出来了 当然fx的帮助是最关键的 之前的办法就是先按照一个部门去做 然后变成自定义函数应用在所有部门上 这样做很繁琐所以才尝试在合并table后的情况下 求解
回复

使用道具 举报

999666 | 2021-2-19 00:11:14 | 显示全部楼层
这个就是技术竞赛里面的20180113的题 我只是判断这种是否用PQ做会更合适但这种需要高度的逻辑
每一个 ...


看看这样行不行?
11092111902097.rar (17.96 KB, 下载次数: 0)
回复

使用道具 举报

实话实说 | 2021-2-19 00:16:14 | 显示全部楼层
也把这个题目做了一下。
11092111902098.rar (18.75 KB, 下载次数: 0)
回复

使用道具 举报

viewsonic | 2021-2-19 00:19:14 | 显示全部楼层
这个题根据其要求分析:1:连续6个月B级(含)及以上的;
因为要求连续B级以上,所以可以先把1到12月份的数据合并成文本,然后根据CD去split,剩下的就只有包含AB的字符串了;

然后根据条件2:连续月份中,至少有一次连续3个月A级的
意思就是只要在剩下的字符串中筛选出包含“AAA”的,且字符串长度大于5的就可以了(条件1:连续6个月),字符串的长度就是连续的月数。

所以,用PQ解不难的,以下M语句中的源是指“部门,1月-12月” 这13列所在的数据区域:
  1. = #table( 2,

  2.        Table.ToList( 源, each { _{0},

  3.                Text.Length(

  4.                    (List.Select(

  5.                        Text.SplitAny( Text.Combine(List.Skip(_)),"CD"),

  6.                        (x)=>Text.Length(x)>5

  7.                         and

  8.                         Text.Contains(x,"AAA") ) & {""} ) {0} ) }))

复制代码
11092111902095.jpg
回复

使用道具 举报

GlitterMai | 2021-2-19 00:25:15 | 显示全部楼层
= Table.TransformColumns(分组的行,{"计数",(x)=>Table.AddColumn(x,"1",(y)=> if y[属性] =1 then null else x{y[属性]-2}[值])})
这种比较绕的,我比较喜欢每个地方都定义一个环境 这种看起来就会好懂的多,可能我还比较菜,初学者
回复

使用道具 举报

polo | 2021-6-29 10:51:33 | 显示全部楼层
呵呵,明白了
回复

使用道具 举报

yuanliwuyan | 2021-8-22 08:08:11 | 显示全部楼层
1v1飘过
回复

使用道具 举报

lubaby726 | 2021-8-23 08:27:58 | 显示全部楼层
呵呵,低调,低调!
回复

使用道具 举报

hsy001 | 2021-11-21 18:40:00 | 显示全部楼层
嘘,低调。
回复

使用道具 举报

飞翔的嘴 | 2021-11-26 20:01:45 | 显示全部楼层
顶起出售广告位
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则