将列中的值的百分比替换为另一列

问题描述 投票:1回答:2

我有一个棘手的问题,也许你们其中一个可以提供帮助。

我有一个列有几个不同的值,其中一个是“不可用”。我想创建一个计算列,用4个新值替换那些“不可用”值,比如说“值1”,“值2”等等。分布均匀,即25%将是“值1”,25%将是“价值2”等我真的很感激我能得到的任何帮助。我应该提一下,我的数据存在于SSAS TDM中,因此我无法使用查询编辑器。

谢谢!

您将在下面找到一些测试数据以及我想要的结果。

Example = 
DATATABLE (
    "Value", STRING,
    {
        { "Not Available" },
        { "Not Available" },
        { "Not Available" },
        { "Not Available" },
        { "Not Available" },
        { "Not Available" },
        { "Not Available" },
        { "Not Available" },
        { "Not Available" },
        { "Not Available" },
        { "Not Available" },
        { "Not Available" },
        { "Bike" },
        { "Bike" },
        { "Bike" },
        { "Bike" },
        { "Skateboard" },
        { "Skateboard" },
        { "Skateboard" },
        { "Skateboard" },
        { "Skateboard" },
        { "Skateboard" },
        { "Snowboard" },
        { "Snowboard" },
        { "Snowboard" },
        { "Snowboard" },
        { "Snowboard" },
        { "Snowboard" },
        { "Penny Board" },
        { "Penny Board" },
        { "Penny Board" },
        { "BMX" },
        { "BMX" },
        { "BMX" }
    }
)

期望的结果:

enter image description here

ssas powerbi dax powerquery
2个回答
2
投票

在另一个答案中,我假设您有一个索引替换表。我还假设你可以为你的Example表创建一个唯一的索引(这是一个单独的问题)。

逻辑是相同的,但现在作为DAX计算列:

Value2 =
IF (
    Example[Value] = "Not Available",
    LOOKUPVALUE (
        'Replace'[Value],
        'Replace'[Index], MOD ( Example[Index], COUNTROWS ( 'Replace' ) )
    ),
    Example[Value]
)

0
投票

我更喜欢在查询编辑器中执行此操作,因为在那里创建索引列更容易。

确保在查询编辑器,替换表Replace中加载了两个表。

let
    Source = Table.FromRows({{"Value1"},{"Value2"},{"Value3"},{"Value4"}},{"Value"}),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Value", type text}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1)
in
    #"Added Index"

和你的示例表。

  1. 在示例表中添加索引。
  2. 通过将模数乘以Replace的行数(在本例中为4)来转换索引列。
  3. 将qazxsw poi合并到qazxsw poi匹配指数。
  4. Replace列扩展为Example
  5. 添加自定义列以选择要使用的列。
  6. 清理。删除您不想保留的任何列。

这是查询的M代码:

Value
© www.soinside.com 2019 - 2024. All rights reserved.