No hay suficiente memoria para completar esta operación. al crear una medida

Un usuario Pregunto ✅

aabdelkader

Hola,

necesito ayuda porque traté de aplicar una medida DAX para obtener el resultado MAXIF, pero recibo este error

No hay suficiente memoria para completar esta operación. Vuelva a intentarlo más tarde cuando haya más memoria disponible.

al aplicar esta función

Seq = COUNTAX(FILTER(CMS,[Avail2]<=EARLIER([Avail2])&&[Code]=EARLIER([Code])),[Code])

mientras que mi conjunto de datos ya no es enorme, solo 36k filas. Pregunto qué razón potencial de tal error

gracias de antemano

vanessafvg

@AAbdelkader tal vez debería decirnos qué intenta hacer, podría haber una variedad de razones por las que

también qué tipos de datos son sus campos

y la función countax, ¿qué está tratando de hacer con los valores de conteo o podría funcionar un countrows en su lugar?

aabdelkader

En respuesta a vanessafvg

@vanessafvg,

Captura.PNG

En resumen, tengo una lista de identificaciones duplicadas en [Code] columna, para cada valor de código múltiplo [Avail Time] valores, en [Last Avail] columna: necesito mantener el máximo [Avail Time] valor para un registro y luego devolver el otro valor a 0

secuencia

Seq = COUNTAX(FILTER(CMS,[Avail Time]<=EARLIER([Avail Time])&&[Code]=EARLIER([Code])),[Code])

máx.

Max Avail = maxx(Filter(CMS,[Code]=EARLIER([Code])),[Seq])

Último disponible

Last Avail = if([Seq]=[Max],[Avail Time],BLANK())

como se menciona en el siguiente ejemplo

Captura.PNG

Descargar archivo Max If.pbix

gracias de antemano

vanessafvg

En respuesta a aabdelkader

@AAbdelkader dice que el archivo ya no está disponible.

aabdelkader

En respuesta a vanessafvg

@vanessafvg subí el actualizado

vanessafvg

En respuesta a aabdelkader

@AAbdelkader ok, ahora lo tengo.

todavía necesita comprender el requisito comercial aquí, ¿está tratando de encontrar la secuencia de eventos por el código? ¿Qué está tratando de hacer con los datos? La razón por la que pregunto es porque al modelo Power Bi no le gustan las columnas calculadas, habría creado las columnas combinadas (código) en Power Query para empezar, pero no puedo. acceda a esa parte del modelo porque no tengo acceso a la fuente, así que no puedo probar eso. Además, ¿por qué estás combinando el código con la fecha? ¿Es eso para mantenerlo único? Agregar una columna de índice es probablemente una mejor manera de hacerlo (también puede hacerlo en Power Query)

si pudiera dar más explicaciones sobre lo que quiere hacer con los datos que lo harían más fácil.

vanessafvg

En respuesta a vanessafvg

@Abdelkader

ok, acabo de cambiar los tipos de datos de sus campos porque usar texto lo hacía feo y valores y concatenar = hambre de rendimiento.

Todavía no estoy seguro de si esto es lo que quieres que haga, pero esto es lo que he hecho y se ejecutó correctamente (aunque tomó uno o dos minutos), sigo pensando que crear un código en Power Query podría ser mejor.

fecha2 = FORMATO(CMS[Date],»Número General»)

Código2 = CONCATENAR(CMS[date2],CMS[Login ID])

Seq = COUNTAX(FILTER(CMS,[Avail Time]<=ANTES([Avail Time])&&[Code2]= ANTES ([Code2])),[Code2])

aabdelkader

En respuesta a vanessafvg

@vanessafvg

lo siento, todavía se carga más, luego me da el error mencionado, necesito aclarar cuál es el resultado que necesito obtener, independientemente de la ecuación utilizada, podría intentar una más fácil.

Captura.PNG

anularemos la consulta que apliqué, tengo 2 columnas [Code] tiene registros duplicados, [Avail Time] tiene múltiples registros para dicho código, necesito [Max Avail] columna, Necesito obtener el registro de disponibilidad máxima para cada [Code] el valor luego devuelve el otro a 0 como se muestra en la imagen

muchas gracias,

ImkeF

En respuesta a aabdelkader

Si usa el editor de consultas en su lugar, no experimentará estos problemas de rendimiento aquí, porque puede «particionar» su tabel en el código y operar en fragmentos mucho más pequeños allí:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Login ID", Int64.Type}, {"Avail Time", Int64.Type}, {"Code", Int64.Type}}),
    GroupCode = Table.Group(#"Changed Type", {"Code"}, {{"Partition", each _, type table}}),
    Function = (Table) =>  
let
    Seq = Table.AddColumn(Table, "Seq", each Table.RowCount(Table.SelectRows(Table, (this)=>this[Avail Time]<=[Avail Time]))),
    #"Added Custom1" = Table.AddColumn(Seq, "Max Avail", each List.Max(Seq[Seq])),
    #"Added Custom" = Table.AddColumn(#"Added Custom1", "Last Avail", each if [Seq]=[Max Avail] then [Avail Time] else null)
in #"Added Custom",
#"Added Custom" = Table.AddColumn(GroupCode, "Custom", each Function([Partition])),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"Date", "Login ID", "Avail Time", "Seq", "Max Avail", "Last Avail"}, {"Date", "Login ID", "Avail Time", "Seq", "Max Avail", "Last Avail"})
in
    #"Expanded Custom"

o si solo necesita el «Último disponible»:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Login ID", Int64.Type}, {"Avail Time", Int64.Type}, {"Code", Int64.Type}}),
    GroupCode = Table.Group(#"Changed Type", {"Code"}, {{"MaxAvail", each List.Max([Avail Time]), type number}, {"OtherColumns", each _, type table}}),
    #"Expanded OtherColumns" = Table.ExpandTableColumn(GroupCode, "OtherColumns", {"Date", "Login ID", "Avail Time"}, {"Date", "Login ID", "Avail Time"}),
    #"Added Custom1" = Table.AddColumn(#"Expanded OtherColumns", "Max Avail", each if [MaxAvail]=[Avail Time] then [MaxAvail] else null)
in
    #"Added Custom1"

Cómo integrar el código M en su soluciónConsulte más recursos de aprendizaje de PBI aquí

vanessafvg

En respuesta a aabdelkader

@AAbdelkader, por lo que esta podría ser una pregunta tonta, ¿por qué no agrupa por campos relevantes, es decir, fecha de código, etc. y luego obtiene el tiempo máximo?

entonces, en otras palabras, en Power Query, cree la clave compuesta que hace que el código sea único creando una columna personalizada y luego agrupe por esa clave y obtenga el máximo de tiempo disponible, ¿o estoy malinterpretando su requisito?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *