新建列,增加随机数,但是新建的那一列数据呈现出来的数字都是一样的

Power Query 凌凌7 ⋅ 于 2020-08-05 14:59:00 ⋅ 最后回复由 2020-08-18 12:57:43 ⋅ 1615 阅读

有一个问题请假,麻烦帮忙解答:
想新建一列,为随机数,后续自动更新自动排名,主要涉及的是这一行:
=Table.AddColumn(结果,"随",each Number.Random())
但是很奇怪,我放在其他的表格中可以实现我需要的,但是我在下面的M函数中使用这个函数,但是出现的效果是这一栏的数据都是一样的,是为什么,是我前后的信息影响了他吗,那是什么信息影响了,自己尝试了很久都搞不清楚,麻烦解答,谢谢

let
    源 = Excel.Workbook(File.Contents("E:\业务\平安\案件\案件.xlsx"),  true),
    表 =(x)=>源{[Name=x]}[Data],
    *业务 =Table.TransformColumnTypes( 表("业务员"),{"分案",type number }),
   业务员 = Table.AddColumn(业务,"随",each Number.Random()),*
   案件 = Table.Buffer(Table.Sort( Table.TransformColumnTypes(表("案"),{{"委案金额", type number}}),{"委案金额",1}) ),
   创建 = Table.AddColumn(案件,"汇总",each #table({"个案序列号","委案金额"},{{[个案序列号],[委案金额]}})),  
   目标量 = Table.AddColumn( Table.AddColumn(业务员,"目标",each List.Sum( 案件[委案金额])/List.Sum( 业务员[分案])*[分案]),"已分",each #table({"个案序列号","委案金额"},{{"0",0}})),

   循环 =Table.Combine( List.Generate(()=>[a = 目标量,b = 创建],each Table.RowCount([a]) > 0 ,each
    if Table.RowCount([b]) = 0 then[ a= #table(Table.ColumnNames(目标量),{}),b=[b]] else 
    [a=[z=  Table.AddColumn ([a],"差距", (x)=>x[目标]-List.Sum(x[已分][委案金额])),
      y = Table.Buffer(Table.Sort(Table.SelectRows(z,(x)=>x[差距]>0),{"差距",1})),
       w =Table.FirstN([b],Table.RowCount(y)),
      v = if  Table.RowCount(y) = Table.RowCount(w) then Table.FromColumns(Table.ToColumns(y)&{w[汇总]},Table.ColumnNames(y)&{"汇"}) else Table.FromColumns(Table.ToColumns(Table.FirstN(y,Table.RowCount(w)))&{w[汇总]},Table.ColumnNames(y)&{"汇"}) ,
      x = Table.RenameColumns(v,{"已分","替换"}),
      r = Table.RemoveColumns( Table.AddColumn(x,"已分",each Table.Combine({[替换],[汇]})),{"差距","汇","替换"})
    ][r] ,
    b=Table.RemoveFirstN([b],Table.RowCount(a)) ],each [a])),
    分组 = Table.Group(循环,"姓名",{"合并",each List.Last([已分]) }),
    展开 = Table.ExpandTableColumn(分组,"合并",{"个案序列号","委案金额"})
in
    展开

file

附言 0  ·  2020-08-05 15:13:55

放在M函数的最后面好像都可以,放在中间就不可以吗,是这么回事吗,为什么会这样,要办法解决吗

成为第一个点赞的人吧 :bowtie:
回复数量: 1
  • 2020-08-18 12:57:43

    M函数都是幂等的,number.random也是。但是生成随机数的时候按照这个逻辑就会有
    问题,就是每行生成相同结果。生成索引列会让函数在每行重新计算,可以解决这个
    问题。

暂无评论~~
  • 请务必阅读并严格遵守《社区管理规范与使用说明》
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 发送表情,可用的 Emoji 见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板粘贴上传, 格式限制 - jpg, png, gif
  • 不支持上传附件,请尽可能用文字和图片将问题描述清楚,如实在需要上传附件,可上传到 共享网盘 后分享链接
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
Ctrl+Enter