Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
Hola
Estoy tratando de crear un generador de valor aleatorio y tengo una tabla muy simple que representa mis datos. Básicamente, necesito mostrar una muestra de 3 usuarios aleatorios que no han sido evaluados ('Evaluado'-0). La parte difícil es que también necesito mostrar el ejemplo basado en segmentaciones de página. El usuario del informe debe poder seleccionar un 'Grupo' y la muestra aleatoria debe verse afectada por la segmentación de datos.
He probado algunas cosas:
- He creado una tabla con sólo los usuarios que no han sido evaluados:
y luego usé RANDBETWEEN() para obtener un nombre aleatorio de esa tabla:
Esto se mide 3 veces para obtener los 3 nombres (pueden ser los mismos de vez en cuando, pero mi conjunto de datos real es enorme por lo que esto debe ser un escenario de 1 en un millón). Esto funciona bien hasta que intento filtrar en 'Grupo'. Parece que no puedo obtener el nombre aleatorio de un posteriormente seleccionado a través de un grupo de segmentación de datos. Siempre consigo un nombre a todos los usuarios no es desatados. Necesito encontrar una manera de aplicar segmentaciones de páginas en la selección aleatoria.
- También probé SAMPLE(3,'Rand test',0), pero esto crea una tabla DAX que tampoco se puede filtrar por filtros de página y solo vuelve a calcular la actualización del informe.
Me gustaría apreciar cualquier ayuda con mi problema! Gracias de antemano!
saludos
Jagadeesh S
Solved! Go to Solution.
Sólo quiero decir que entiendo una manera de hacerlo. Puede que no sea perfecto, pero hace exactamente lo que necesito que haga. Creé un parámetro y estoy filtrando mi tabla en ese parámetro. Cada vez que el parámetro cambia, se vuelve a calcular la función SAMPLE() y obtengo una muestra aleatoria del grupo que he seleccionado.
Sólo quiero decir que entiendo una manera de hacerlo. Puede que no sea perfecto, pero hace exactamente lo que necesito que haga. Creé un parámetro y estoy filtrando mi tabla en ese parámetro. Cada vez que el parámetro cambia, se vuelve a calcular la función SAMPLE() y obtengo una muestra aleatoria del grupo que he seleccionado.
No se puede hacer mucho en DAX con un resultado de tabla. Al final de la medida es necesario tener un valor escalar.
Sí, en caso de que use una medida, no podré tener una tabla como salida, pero SAMPLE() me daría una tabla. Necesito una tabla porque en algunos escenarios tendría que hacer una lista aleatoria con hasta 70 personas. No quiero hacer 70 medidas y no poder extraerlas en una sola lista.
No @lbendlin,
Así que sí, voy a tratar de hacer el requisito lo más claro posible.
1. tenemos una lista de personas (cada persona pertenece a un grupo)
2. seleccione un grupo
3. seleccione cuál debe ser mi tamaño de muestra
4. tener una lista aleatoria de personas que formen parte del grupo seleccionado.
Lo que obtengo actualmente es una lista aleatoria de personas, pero falta la parte del grupo. No puedo conseguir que el filtro afecte al resultado final. Lo que también descubrí es que lo más probable es que necesite una salida de tabla, lo que probablemente hace que SAMPLE() sea una mejor opción. ¿Puedo crear un parámetro para achive paso 3?
saludos
Jagadeesh S
El recálculo depende de varios factores, incluido si el modelo está establecido en modo de recálculo manual o automático, y si los datos se han actualizado.
RAND y otras funciones volátiles que no tienen valores fijos no siempre se vuelven a calcular. Por ejemplo, la ejecución de una consulta o el filtrado normalmente no hará que dichas funciones se vuelvan a evaluar. Sin embargo, los resultados de estas funciones se volverán a calcular cuando se vuelva a calcular toda la columna. Estas situaciones incluyen la actualización desde un origen de datos externo o la edición manual de datos que provoca la reevaluación de las fórmulas que contienen estas funciones.
RAND siempre se vuelve a calcular si la función se utiliza en la definición de una medida.
Por lo tanto, supuestamente debería poder hacer esto en una medida basada en un evento de cambio de filtro. ¿Puedes eliminar un poco más la declaración del problema? Como, "Tener una lista de personas, aplicar un filtro arbitrario a la lista, y luego elegir dos elementos de la lista restante" - ¿sería correcto?