Microsoft Fabric Community Conference 2025, March 31 - April 2, Las Vegas, Nevada. Use code FABINSIDER for a $400 discount.
Register nowThe 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.
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 caso | 5WD_CaseNotes_v6 | Contenedores |
01567939 | Entre los días laborables 1 y 5 | 1 |
01567939 | Entre los días laborables 11 y 15 | 3 |
01567939 | Entre los días laborables 16 y 20 | 4 |
01567939 | Entre los días laborables 51 y 55 | 11 |
01567939 | Entre los días laborables 56 y 60 | 12 |
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:
Solved! Go to Solution.
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.
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.
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.
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 :
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:
Le agradezco de antemano por ayudar en esto.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Check out the February 2025 Power BI update to learn about new features.