我有一个棘手的问题,也许你们其中一个可以提供帮助。
我有一个列有几个不同的值,其中一个是“不可用”。我想创建一个计算列,用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" }
}
)
期望的结果:
在另一个答案中,我假设您有一个索引替换表。我还假设你可以为你的Example
表创建一个唯一的索引(这是一个单独的问题)。
逻辑是相同的,但现在作为DAX计算列:
Value2 =
IF (
Example[Value] = "Not Available",
LOOKUPVALUE (
'Replace'[Value],
'Replace'[Index], MOD ( Example[Index], COUNTROWS ( 'Replace' ) )
),
Example[Value]
)
我更喜欢在查询编辑器中执行此操作,因为在那里创建索引列更容易。
确保在查询编辑器,替换表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"
和你的示例表。
Replace
的行数(在本例中为4)来转换索引列。Replace
列扩展为Example
。这是查询的M代码:
Value