Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

The Power BI DataViz World Championships are on! With four chances to enter, you could win a spot in the LIVE Grand Finale in Las Vegas. Show off your skills.

Reply
Syndicate_Admin
Administrator
Administrator

Identificación de pasa/error en función de los binnings

Hola experto,

Estoy tropezando con cómo puedo crear un dax que pueda identificar pasa/falla en función de los intervalos.

Tengo un conjunto de datos que tiene varios ID de casos que se han agrupado en categorías como se muestra a continuación:

Entre los días laborables -4 y 0
Entre los días laborables 1 y 5
Entre los días laborables 6 y 10
Entre los días laborables 11 y 15
Entre los días laborables 16 y 20
Entre los días laborables 21 y 25
Entre los días laborables 26 y 30
Entre los días laborables 31 y 35
Entre los días laborables 36 y 40
Entre los días laborables 41 y 45
Entre los días laborables 46 y 50
Entre los días laborables 51 y 55
Entre los días laborables 56 y 60
Entre los días laborables 61 y 65
Entre los días laborables 66 y 70
Entre los días laborables 71 y 75
Entre los días laborables 76 y 80
Entre los días laborables 81 y 85
Entre los días laborables 86 y 90
Entre los días laborables 91 y 95
Entre los días laborables 96 y 100
Entre los días laborables 101 y 105
Entre los días laborables 106 y 110
Entre los días laborables 111 y 115
Entre los días laborables 116 y 120
Entre los días laborables 121 y 125
Entre los días laborables 126 y 130
Entre los días laborables 131 y 135
Entre los días laborables 136 y 140
Entre los días laborables 141 y 145
Entre los días laborables 146 y 150
Entre los días laborables 151 y 155
Entre los días laborables 156 y 160
Entre los días laborables 161 y 165
Entre los días laborables 166 y 170
Entre los días laborables 171 y 175
Entre los días laborables 181 y 185
Entre los días laborables 186 y 190
Entre los días laborables 191 y 195
Entre los días laborables 196 y 200
Entre los días laborables 201 y 205
Entre los días laborables 206 y 210
Entre los días laborables 211 y 215
Entre los días laborables 221 y 225
Entre los días laborables 231 y 235
Entre los días laborables 236 y 240
Entre los días laborables 241 y 245
Entre los días laborables 256 y 260
Entre los días laborables 261 y 265


He creado la tabla personalizada que habilitará el número secuencial del 1 al 48.
El resultado que sigo es, si falta una secuencia como se muestra a continuación:

Número de caso5WD_CaseNotes_v6Contenedores
01567939Entre los días laborables 1 y 51
01567939Entre los días laborables 11 y 153
01567939Entre los días laborables 16 y 204
01567939Entre los días laborables 51 y 5511
01567939Entre los días laborables 56 y 6012


El dax debería ser capaz de identificar que falta un número secuencial, por ejemplo. secuencial #2, secuencial #5-10 como 'Error' o 'Pasa' si no faltan números secuenciales.

He intentado usar chatgpt dando como resultado a continuación dax:

Missing_Bins =
VAR CaseID = SELECTEDVALUE(Summary_HistoryCases[número de caso])

-- Obtener todos los contenedores existentes para este caso
VAR CubosExistentes =
CALCULABLE(
DISTINTO(Summary_HistoryCases[Papeleras]),
Summary_HistoryCases[número de caso] = ID de caso
)

-- Asegúrese de que existan contenedores antes de encontrar el mínimo y el máximo
VAR Papelera mínima = SI(COUNTROWS(ExistingBins) > 0, BRIBONA(ExistingBins, Summary_HistoryCases[Bins]), ESPACIO EN BLANCO())
VAR MaxBin = SI(COUNTROWS(ExistingBins) > 0, MAXX(ExistingBins, Summary_HistoryCases[Bins]), ESPACIO EN BLANCO())

-- Genere los bins esperados solo si MinBin y MaxBin son válidos
VAR ExpectedBins =
SI(
NO(ISBLANK(MinBin)) && NO(ISBLANK(MaxBin)),
GENERATESERIES(MinBin, MaxBin, 1),
ESPACIO EN BLANCO()
)

-- Convertir ExpectedBins en una tabla con una columna con nombre
VAR ExpectedBinsTable =
SI(
NO(ISBLANK(ExpectedBins)),
SELECTCOLUMNS(ExpectedBins, "Valor", [Valor]),
ESPACIO EN BLANCO()
)

-- Buscar los bins que faltan solo si ExpectedBinsTable no está en blanco
VAR MissingBins =
SI(
NO(ISBLANK(ExpectedBinsTable)),
EXCEPTUAR(
ExpectedBinsTable,
Cubos existentes
),
ESPACIO EN BLANCO()
)

DEVOLUCIÓN
SI(NO(ISBLANK(MissingBins)) && COUNTROWS(MissingBins) > 0, "Contenedores faltantes detectados", "No faltan contenedores")
Pero lamentablemente no logra generar los resultados deseables.

Agradecería cualquier ayuda, gracias de antemano.






1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Hola, gracias por toda su ayuda.

Encontré la solución creando un mapeo secuencial en Excel, luego sumé cada uno de los secuenciales como una suma, por ejemplo. Bins 1 --> 1, Bins 2 -->2, Bins 3--> 3 luego para sumarlo y hacerlo como ID, por ejemplo. 1 + 0 = 1, 1 + 2 = 3, 1 + 2 + 3 = 6 y así sucesivamente. Esto identificará si faltan espacios en toda la secuencia de los contenedores.

View solution in original post

9 REPLIES 9
Syndicate_Admin
Administrator
Administrator

Hola, gracias por toda su ayuda.

Encontré la solución creando un mapeo secuencial en Excel, luego sumé cada uno de los secuenciales como una suma, por ejemplo. Bins 1 --> 1, Bins 2 -->2, Bins 3--> 3 luego para sumarlo y hacerlo como ID, por ejemplo. 1 + 0 = 1, 1 + 2 = 3, 1 + 2 + 3 = 6 y así sucesivamente. Esto identificará si faltan espacios en toda la secuencia de los contenedores.

Syndicate_Admin
Administrator
Administrator

Hola @jhauw74

Puede lograr esto identificando los bins secuenciales que faltan para cada número de caso. La clave es comparar las ubicaciones existentes con una serie generada de ubicaciones esperadas y determinar si falta algún número.

Pass_Fail_Status = 
VAR CaseID = SELECTEDVALUE(Summary_HistoryCases[casenumber])

-- Get existing bins for the selected case
VAR ExistingBins =
    CALCULATETABLE(
        DISTINCT(Summary_HistoryCases[Bins_Sequence]), 
        Summary_HistoryCases[casenumber] = CaseID
    )

-- Find the minimum and maximum bin sequence numbers
VAR MinBin = MINX(ExistingBins, Summary_HistoryCases[Bins_Sequence])
VAR MaxBin = MAXX(ExistingBins, Summary_HistoryCases[Bins_Sequence])

-- Generate the expected full sequence within the range
VAR ExpectedBins = GENERATESERIES(MinBin, MaxBin, 1)

-- Identify missing bins by comparing expected vs. actual
VAR MissingBins = EXCEPT(ExpectedBins, ExistingBins)

-- Check if any missing bins exist
VAR MissingCount = COUNTROWS(MissingBins)

RETURN 
    IF(MissingCount > 0, "Fail", "Pass")

Gracias @Poojara_D12 - @rajendraongole1 ha proporcionado un DAX refinado similar, desafortunadamente no funciona como dando este error: "Los argumentos en la función GenerateSeries no pueden estar en blanco"

¿Puedes probar lo siguiente

Missing_Bins =
VAR CaseID = SELECTEDVALUE(Summary_HistoryCases[número de caso])

-- Obtenga los números de bin únicos para este ID de caso
VAR ExistingBins =
CALCULATETABLE(
VALORES(Summary_HistoryCases[Bins]),
Summary_HistoryCases[número de caso] = ID de caso
)

-- Asegúrese de que haya ubicaciones existentes antes de calcular el mín. / máx.
VAR MinBin = MINX(ExistingBins, Summary_HistoryCases[Bins])
VAR MaxBin = MAXX(ExistingBins, Summary_HistoryCases[Bins])

-- Manejar MinBin/MaxBin en blanco configurando los valores predeterminados
VAR SafeMinBin = IF(ISBLANK(MinBin), 0, MinBin) -- El valor predeterminado es 0 si está en blanco
VAR SafeMaxBin = IF(ISBLANK(MaxBin), 0, MaxBin) -- El valor predeterminado es 0 si está en blanco

-- Generar la secuencia esperada solo si existen bins válidos
VAR ExpectedBins =
IF(SafeMinBin <> 0 & SafeMaxBin <> 0,
GENERATESERIES (SafeMinBin, SafeMaxBin, 1),
EN BLANCO()
)

-- Buscar los bins que faltan solo si ExpectedBins no está en blanco
VAR MissingBins =
SI(
NOT(ISBLANK(ExpectedBins)),
EXCEPTO(
ExpectedBins,
Cubos existentes
),
EN BLANCO()
)

-- Devuelve "Fail" si faltan contenedores, "Pass" si existen todos los bins
DEVOLUCIÓN
IF(SafeMinBin = 0 || SafeMaxBin = 0, "Sin datos",
IF(NOT(ISBLANK(MissingBins)) && COUNTROWS(MissingBins) > 0, "Fail", "Pass")
)

Todavía existe el problema, por favor hágamelo saber.

Gracias @rajendraongole1 , lamentablemente todavía no funciona 😪

jhauw74_0-1738822896994.png

Syndicate_Admin
Administrator
Administrator

Hola @jhauw74 - Su DAX necesita una mejor manera de comparar los bins existentes con la secuencia esperada para detectar brechas correctamente.

Dax modificado para su referencia a continuación:

Missing_Bins =
VAR CaseID = SELECTEDVALUE(Summary_HistoryCases[número de caso])

-- Obtener todos los contenedores existentes para este caso
VAR ExistingBins =
CALCULATETABLE(
VALORES(Summary_HistoryCases[Bins]),
Summary_HistoryCases[número de caso] = ID de caso
)

-- Obtenga los números de contenedor mínimo y máximo para este caso
VAR MinBin = MINX(ExistingBins, Summary_HistoryCases[Bins])
VAR MaxBin = MAXX(ExistingBins, Summary_HistoryCases[Bins])

-- Generar la secuencia esperada de bins entre MinBin y MaxBin
VAR ExpectedBins =
GENERATESERIES(MinBin, MaxBin, 1)

-- Comparar los bins esperados con los existentes
VAR MissingBins =
EXCEPTO(ExpectedBins, ExistingBins)

-- Devolución de Pasa/Falla en función de los contenedores que faltan
DEVOLUCIÓN
IF(COUNTROWS(MissingBins) > 0, "Error", "Paso")

Si la columna Bins contiene texto en lugar de valores numéricos (por ejemplo, "Entre los días laborables 1 y 5"), deberá asignarlos a números en una tabla independiente para obtener comparaciones precisas.
Asegúrese de que la columna Bins se haya convertido en una secuencia numérica en el conjunto de datos.

@rajendraongole1 gracias por ayudar 🙂

He probado el DAX modificado pero genera un error: "Los argumentos de la función GenerateSeries no pueden estar en blanco".
En mi columna de 'contenedores', todos están identificados como un número entero.

Además, esta tabla se crea básicamente usando summarize dax :

Summary_HistoryCases =
RESUMIR(
FILTRO(
Case_History,
NO(ISBLANK(Case_History[número de caso])) &&
NO(ISBLANK(Case_History[createddate_])) &&
NO(ISBLANK(Case_History[lastmodifieddate]))
),
Case_History[número de caso],
--Case_History[createddate_],
--Case_History[fecha modificada por el usuario],
Case_History[5WD_CaseNotes_v6]
)
A continuación se muestra la instantánea de la tabla de resumen:
jhauw74_0-1738794657652.png

La columna Bins proviene de un excel donde realizo el agrupamiento en función del tipo de valor, es decir. entre los días laborables 1 y 5 = 1, los días laborables 6 y 10 = 2, y así sucesivamente.

Me pregunto si el DAX no funciona debido a lo anterior.

Hola @jhauw74 - La columna Bins no se reconoce correctamente como números en la medida DAX.

Medida DAX modificada:

Missing_Bins =
VAR CaseID = SELECTEDVALUE(Summary_HistoryCases[número de caso])

-- Obtenga los números de bin únicos para este ID de caso
VAR ExistingBins =
CALCULATETABLE(
VALORES(Summary_HistoryCases[Bins]),
Summary_HistoryCases[número de caso] = ID de caso
)

-- Asegúrese de que haya ubicaciones existentes antes de calcular el mín. / máx.
VAR MinBin = IF(COUNTROWS(ExistingBins) > 0, MINX(ExistingBins, Summary_HistoryCases[Bins]), BLANK())
VAR MaxBin = IF(COUNTROWS(ExistingBins) > 0, MAXX(ExistingBins, Summary_HistoryCases[Bins]), BLANK())

-- Si MinBin o MaxBin están en blanco, devuelve "No Data"
VAR BinCheck =
IF(ISBLANK(MinBin) || ISBLANK(MaxBin), "Sin datos", "Continuar")

-- Generar la secuencia esperada solo si existen bins válidos
VAR ExpectedBins =
IF(BinCheck = "Continuar",
GENERATESERIES(MinBin, MaxBin, 1),
EN BLANCO()
)

-- Buscar los bins que faltan solo si ExpectedBins no está en blanco
VAR MissingBins =
SI(
NOT(ISBLANK(ExpectedBins)),
EXCEPTO(
ExpectedBins,
Cubos existentes
),
EN BLANCO()
)

-- Devuelve "Fail" si faltan contenedores, "Pass" si existen todos los bins
DEVOLUCIÓN
IF(BinCheck = "Sin datos", "Sin datos",
IF(NOT(ISBLANK(MissingBins)) && COUNTROWS(MissingBins) > 0, "Fail", "Pass")
)

Aplique esta medida DAX revisada. y avíseme si todavía existe un problema.

Gracias @rajendraongole1 , lo acabo de aplicar pero todavía hay un error a continuación:

jhauw74_0-1738815226590.png

Le agradezco de antemano por ayudar en esto.

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

Check out the February 2025 Power BI update to learn about new features.

Feb2025 NL Carousel

Fabric Community Update - February 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors
Top Kudoed Authors