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, chicos
Tengo una tabla en mi conjunto de datos 'WorkItems Bloqueado (desde el 1 de enero 20) - No editar' que se ve así:
Sólo quiero extraer esas filas para WorkItemID que tenían un TagNames que contenía la palabra 'Block' OR donde el WorkItemID tenía una columna Bloqueada que contenía 'Sí' (así como las veces que era 'No' para ese WorkItemID respectivo).
Anteriormente, cuando lo usaba solo para TagNames, tenía lo siguiente:
WorkItemsBlocked =
FILTER (
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit',
CALCULATE (
COUNT ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[TagNames] ),
SEARCH ( "Block", 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[TagNames], 1, 0 ) > 0,
ALLEXCEPT ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit', 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[WorkItemId] )
) > 0
)
Pero no estoy seguro de cómo tener en cuenta tanto los TagNames que contienen bloqueados como los Bloqueados que contienen Sí.
¿Algún consejo?
Solved! Go to Solution.
No @FlowViz,
Gracias por el archivo de ejemplo, consulte la fórmula de tabla calculada a continuación
Sample Table =
var filterTable =
CALCULATETABLE(
VALUES( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[WorkItemId]),
FILTER('WorkItems Blocked (since 1st Jan 20) - Do Not Edit',
SEARCH("block",
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[TagNames],1,0)>0
|| lower( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked]) = "yes")
)
return
CALCULATETABLE(
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit', 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[WorkItemId] in filterTable,
lower( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked]) = "no" || lower( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked]) = "yes"
)
crea la siguiente tabla
Gracias
No @FlowViz,
añadido un adicional o condición
WorkItemsBlocked2 =
VAR filterTable =
CALCULATETABLE (
VALUES ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[WorkItemId] ),
FILTER (
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit',
SEARCH (
"Block",
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[TagNames],
1,
0
) > 0
|| LOWER ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked] ) = "yes"
)
)
RETURN
CALCULATETABLE (
FILTER (
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit',
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[WorkItemId]
IN filterTable
&&( (
SEARCH (
"Block",
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[TagNames],
1,
0
) > 0
|| LOWER ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked] ) = "yes"
)
|| LOWER ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked] ) = "no"
|| LOWER ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked] ) = "")
)
)
¡Increíble! ¡Gracias, esto parece hacer el truco!
Para mayor claridad, la nueva tabla debe tener cualquier identificador de elemento de trabajo que haya tenido un TagNames que contenga "block" y el historial asociado (cada fila es el historial de cambios en un elemento) o cualquier identificador de elemento de trabajo que haya tenido un valor bloqueado de "Sí" y el historial asociado de la tabla original - WorkItems Blocked (desde el 1 de enero 20) - No editar
No @FlowViz,
Gracias por el archivo de ejemplo, consulte la fórmula de tabla calculada a continuación
Sample Table =
var filterTable =
CALCULATETABLE(
VALUES( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[WorkItemId]),
FILTER('WorkItems Blocked (since 1st Jan 20) - Do Not Edit',
SEARCH("block",
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[TagNames],1,0)>0
|| lower( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked]) = "yes")
)
return
CALCULATETABLE(
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit', 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[WorkItemId] in filterTable,
lower( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked]) = "no" || lower( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked]) = "yes"
)
crea la siguiente tabla
Gracias
¡Muchas gracias!
feliz de ayudar
Acabo de hacer otra comprobación con otro conjunto de datos donde sólo utilizan la etiqueta de "bloqueado" y no utilizan bloqueado "sí" y obtendo una tabla en blanco que no es correcta.
He adjuntado este vínculo al archivo/conjunto de datos que menciono, esto debería tener datos, ya que tienen elementos donde se usa 'bloqueado' en TagNames...
No @FlowViz,
Lo sentimos por el retraso, aquí está la consulta de tabla actualizada, cambió la lógica en el filtro de tabla devuelto a incluidas ('bloqueada' o 'sí') o 'no' filas
WorkItemsBlocked2 =
VAR filterTable =
CALCULATETABLE (
VALUES ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[WorkItemId] ),
FILTER (
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit',
SEARCH (
"Blocked",
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[TagNames],
1,
0
) > 0
|| LOWER ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked] ) = "yes"
)
)
RETURN
CALCULATETABLE (
FILTER (
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit',
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[WorkItemId]
IN filterTable
&& (
SEARCH (
"Blocked",
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[TagNames],
1,
0
) > 0
|| LOWER ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked] ) = "yes"
)
|| LOWER ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked] ) = "no"
)
)
Espero que esto ayude,
Así que eso está llegando. Todavía parece faltar filas para los elementos que en un momento dado tenían los TagNames 'bloqueados'.
Aquí hay un enlace a la antigua manera/ imagen a continuación de cómo me gustaría que fuera:
Aquí hay un enlace a la nueva forma/imagen de cómo se ve actualmente:
Así que aquellas 2 ocasiones en las que TagNames estaba en blanco/sin contener Bloqueado necesitan estar allí. ¿Se puede hacer eso?
No @FlowViz,
añadido un adicional o condición
WorkItemsBlocked2 =
VAR filterTable =
CALCULATETABLE (
VALUES ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[WorkItemId] ),
FILTER (
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit',
SEARCH (
"Block",
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[TagNames],
1,
0
) > 0
|| LOWER ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked] ) = "yes"
)
)
RETURN
CALCULATETABLE (
FILTER (
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit',
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[WorkItemId]
IN filterTable
&&( (
SEARCH (
"Block",
'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[TagNames],
1,
0
) > 0
|| LOWER ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked] ) = "yes"
)
|| LOWER ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked] ) = "no"
|| LOWER ( 'WorkItems Blocked (since 1st Jan 20) - Do Not Edit'[Blocked] ) = "")
)
)
Una pregunta más: ¿qué pasa con una instancia en la que no hay ninguna columna "Bloqueada" en la tabla de origen? He encontrado casos en los que este puede ser el caso... ¿Podría la tabla calculada explicar esto?
No @FlowViz,
Me burlé de algunos datos de muestra, así que esto puede no ser perfecto, pero creo que el proceso es válido
- crear una variable con todos los workitemids que contienen etiquetas bloqueadas y están bloqueados es igual a sí
- filtrar la tabla por la tabla variable donde se bloquea = sí o no
Sample Table =
var filterTable = CALCULATETABLE(VALUES('Table'[WorkItemId]), FILTER('Table', SEARCH("blocked", 'Table'[TagName],1,0)>0 && lower('Table'[Blocked]) = "yes"))
return
CALCULATETABLE('Table', 'Table'[WorkItemId] in filterTable, lower('Table'[Blocked]) = "no" || lower('Table'[Blocked]) = "yes" )
Espero que esto funcione para ti
No @FlowViz,
¿Puede proporcionar los datos como una tabla, hará las cosas mucho más fácil para la comunidad para ayudar.
Gracias
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 |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |