Asamadi
Quiero crear una columna personalizada (entorno del editor de consultas) y generar números aleatorios entre, por ejemplo, 500 a 1000.
He probado esta fórmula: Number.RandomBetween(500,1000)
pero crea el mismo valor en todas las celdas de Columna.
¿Cómo puedo hacer esto?
Asamadi
En respuesta a Marcel Beug
Encontré la solución:
Si agrego la columna de índice, la fórmula funciona correctamente.
Marcel Beug
En tales casos, usaría otra columna de números, como en:
let Source = Table.FromColumns({List.Numbers(0,20,1)},type table[Number = Int64.Type]), #"Added Custom" = Table.AddColumn(Source, "Random", each Number.RandomBetween(500+[Number]-[Number],1000)) in #"Added Custom"
La parte [Number]-[Number] fuerza el recálculo del número aleatorio para cada fila. Puede usar cualquier columna numérica para esto.
smpa01
En respuesta a Marcel Beug
Hola @MarcelBeug,
Usé su método aquí http://community.powerbi.com/t5/Desktop/Randomly-assiginng-a-specific-value-to-one-of-the-rows/mp/3….
Datos sin procesar: https://drive.google.com/open?id=1osjur8vQtLnW5UL4_E-17D2FKFpmsPjQj2_v61rlPkk
Código
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"Email", type text}}), #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 1, 1), #"Added Custom" = Table.AddColumn(#"Added Index", "Custom", each 1), #"Added Custom1" = Table.AddColumn(#"Added Custom", "Custom.1", each Number.RandomBetween(1+[Index]-[Index],100000)), #"Changed Type1" = Table.TransformColumnTypes(#"Added Custom1",{{"Custom.1", Int64.Type}}), #"Inserted Division" = Table.AddColumn(#"Changed Type1", "Division", each [Custom.1] / 100, type number), #"Grouped Rows" = Table.Group(#"Inserted Division", {"Custom"}, {{"Max", each List.Max([Division]), type number}, {"AD", each _, type table}}), #"Expanded AD" = Table.ExpandTableColumn(#"Grouped Rows", "AD", {"Email", "Index", "Division"}, {"AD.Email", "AD.Index", "AD.Division"}), #"Added Custom2" = Table.AddColumn(#"Expanded AD", "Custom.1", each if [AD.Division]=[Max] then 2 else 1) in #"Added Custom2"
Ahora, una vez que el código realiza la aleatorización por primera vez en el paso – Custom1 agregado, no quiero que se vuelva a calcular en los siguientes pasos, ya que tengo la intención de hacer mi cálculo de seguimiento basado en el valor de la columna «Custom.1» derivado en Custom1 agregado .
¿Hay una manera de hacer eso?
Gracias de antemano.
Marcel Beug
En respuesta a Marcel Beug
De manera alternativa y similar, puede crear una columna (temporal) con el valor límite inferior en cada fila.
let Source = Table.FromColumns({List.Numbers(500,20,0)},type table[NumberFrom = Int64.Type]), #"Added Custom" = Table.AddColumn(Source, "Random", each Number.RandomBetween([NumberFrom],1000)) in #"Added Custom"
Asamadi
En respuesta a Marcel Beug
Encontré la solución:
Si agrego la columna de índice, la fórmula funciona correctamente.
bspilar
En respuesta a Asamadi
Agregar el índice antes de que funcione la función rand. ¡Gracias!
rayoOC
En respuesta a Asamadi
tienes el codigo que usaste?