Powerbi 在幂Bi中,根据数字的除法将行拆分为多个其他行
在Power BI Desktop中,我有一个excel文件中的表格,我想根据特定列的值和默认数字之间的除法拆分一行 更详细地说,假设我们有这样一个表: 如果我们希望偏差列金额的默认值为50,那么理想的结果如下: 您知道如何在Power query editor或dax中实现这一点吗Powerbi 在幂Bi中,根据数字的除法将行拆分为多个其他行,powerbi,dax,powerquery,Powerbi,Dax,Powerquery,在Power BI Desktop中,我有一个excel文件中的表格,我想根据特定列的值和默认数字之间的除法拆分一行 更详细地说,假设我们有这样一个表: 如果我们希望偏差列金额的默认值为50,那么理想的结果如下: 您知道如何在Power query editor或dax中实现这一点吗 感谢您在Power Query for Excel中测试了此功能,但希望您在Power BI中也能使用此功能。如果创建一个函数,如: divisionToList = (numberToDivide as nu
感谢您在Power Query for Excel中测试了此功能,但希望您在Power BI中也能使用此功能。如果创建一个函数,如:
divisionToList = (numberToDivide as number, numberToDivideBy as number) as list =>
let
divisionResult = numberToDivide / numberToDivideBy,
isResultValid = (divisionResult >= 0) and (Number.Mod(divisionResult, 1) = 0),
errorIfInvalid = Error.Record("Cannot create a list with " & Text.From(divisionResult) & " items", Number.ToText(numberToDivide) & " / " & Number.ToText(numberToDivideBy) & " = " & Text.From(divisionResult), null),
listOrError = if isResultValid then List.Repeat({divisionResult}, divisionResult) else error errorIfInvalid
in listOrError,
它应该将两个数字分开,并返回一个长度为d
的列表,其中每个元素都是d
(d
是分割的结果)。然后,可以在表的上下文中将该列表
扩展为新行
对于除法产生有问题的数字的情况,函数中有一些基本的错误处理(因为您不能有一个包含5.1个元素或-1个元素的列表)。如有必要,您可以更改/删除此处理
我想下面的代码会把我从你的第一张图片带到第二张图片——希望能给你一些关于如何实现这一点的想法
let
mockData = Table.FromColumns({{200, 400}, {"A", "B"}}, type table [Amount = number, Description = text]),
defaultValue = 50, // Not sure what logic is required for arriving at this figure, so have simply assigned it.
divisionToList = (numberToDivide as number, numberToDivideBy as number) as list =>
let
divisionResult = numberToDivide / numberToDivideBy,
isResultValid = (divisionResult >= 0) and (Number.Mod(divisionResult, 1) = 0),
errorIfInvalid = Error.Record("Cannot create a list with " & Text.From(divisionResult) & " items", Number.ToText(numberToDivide) & " / " & Number.ToText(numberToDivideBy) & " = " & Text.From(divisionResult), null),
listOrError = if isResultValid then List.Repeat({divisionResult}, divisionResult) else error errorIfInvalid
in listOrError,
invokeFunction = Table.TransformColumns(mockData, {{"Amount", each divisionToList(_, defaultValue), type list}}),
expanded = Table.ExpandListColumn(invokeFunction, "Amount")
in
expanded
当您将文本模板与语句等变量一起使用时,ErrorIfInvalid
使用使模板更易于阅读。它还为您调用*.ToText
。还可以使用逗号或其他分隔符将列表
转换为字符串
。