Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
¡Hola!
Tengo un conjunto de datos largo (columnas = "Nombre", "Habilidad", "Grado" y >10000 filas).
Descripción de las columnas:
Nombre: Identificador único de persona.
Habilidad: Elementos como "francés", "ML", "Contabilidad" de una lista de más de 100 elementos.
Grado: Qué tan bueno es un preson en esa habilidad.
Me gustaría cortar el conjunto de datos para encontrar a todas las personas con habilidades por encima de las calificaciones dadas. Así, por ejemplo, para este conjunto de datos:
Nombre | Habilidad | Grado |
James | Francés | 2 |
James | ML | 8 |
Marc | ML | 6 |
Marc | Inglés | 10 |
Marc | Francés | 9 |
Quiero poder filtrar para francés con grado >5 y ML con grado >4 para obtener que Marc cumpla con estas condiciones.
El uso de las muchas habilidades (más de 100) pivotantes no es una opción, ya que tendría que construir una segmentación de datos para más de 100 columnas.
¡Realmente aprecio su ayuda!
Mejor
S.
Aquí hay otra manera.
Primero cree 2 tablas desconectadas para habilidades y 2 tablas desconectadas para grados (para estos últimos he creado tablas de 0 a 10) para usar como segmentaciones de datos
El modelo se ve así:
A continuación, cree las siguientes medidas para usarlas como filtro en el panel de filtros:
Esta medida de nombre de filtro se debe utilizar como filtro TopN en el campo Nombre (Top 1)
Filter Name =
VAR Sel1 =
CALCULATETABLE (
VALUES ( 'Table'[Name] ),
FILTER (
'Table',
'Table'[Skill] = SELECTEDVALUE ( 'Skills Selection 1'[Skill 1] )
&& 'Table'[Grade] > SELECTEDVALUE ( 'Grade 1'[Grade 1] )
)
)
VAR Sel2 =
CALCULATETABLE (
VALUES ( 'Table'[Name] ),
FILTER (
'Table',
'Table'[Skill] = SELECTEDVALUE ( 'Skills Selection 2'[Skill 2] )
&& 'Table'[Grade] > SELECTEDVALUE ( 'Grade 2'[Grade 2] )
)
)
VAR _list =
INTERSECT ( Sel1, Sel2 )
RETURN
COUNTROWS ( INTERSECT ( VALUES ( 'Table'[Name] ), _list ) )
Filter Subjects =
VAR Sel1 =
VALUES ( 'Skills Selection 1'[Skill 1] )
VAR Sel2 =
VALUES ( 'Skills Selection 2'[Skill 2] )
VAR _list =
UNION ( Sel1, Sel2 )
RETURN
COUNTROWS ( INTERSECT ( VALUES ( 'Table'[Skill] ), _list ) )
Llegar:
He adjuntado el archivo PBIX de ejemplo
@sbara , puedes lograrlo creando dos medidas:
Max French Grade =
MAXX(
FILTER('YourTable', 'YourTable'[Skill] = "French"),
'YourTable'[Grade]
)
Max ML Grade =
MAXX(
FILTER('YourTable', 'YourTable'[Skill] = "ML"),
'YourTable'[Grade]
)
y crear un visual de tabla con tres columnas: Nombre, Max ML Grade, Max French Grade. Esto te da
luego, en los filtros de la tabla, establezca Grado francés máximo en Es mayor que 5 y establezca el Grado máximo de ML en Es mayor que 4. Esto da a Marc como el único nombre en la lista:
Otra forma es crear una medida que aplique la lógica francesa y ML y cree una bandera para el nombre:
French>5 AND ML>4 =
MAXX(
SUMMARIZE(
'YourTable',
'YourTable'[Name],
"_Flag",
VAR vA = [Max French Grade]
RETURN
CALCULATE(
IF([Max French Grade] > 5 && [Max ML Grade] > 4, "Y", "N"),
ALL('YourTable'[Grade], 'YourTable'[Skill])
)
)
,[_Flag]
)
Esta medida se puede colocar en la tabla, junto con las columnas Nombre, Habilidad y Grado
y si lo desea, puede filtrar esa medida por valores de Y, que mostrarán:
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
1 | |
1 |