cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
jgeisslinger
Regular Visitor

Use el valor de fecha máxima para rellenar fechas futuras

Hola

supongamos que tenemos dos tablas de datos A y B donde ambos campos de fecha de retención y están vinculados en el campo de fecha

Tabla A: Inventario total real de las empresas de los últimos meses

Tabla B: Inventario de fábrica para todos los meses pasados y futuros (planificado)

Usé una medida para calcular la diferencia entre Inventario de empresa e Inventario de fábrica : Importar inventario. Por supuesto, esto sólo se hace durante los últimos meses.

Supongamos que, a efectos de planificación, el inventario de importación no cambiará para los meses futuros hasta que haya un inventario real disponible y podamos calcular el valor correcto. Así que ahora quiero mejorar el cálculo para usar el valor de importación de fecha máxima para rellenar todas las entradas futuras que me permitirán pronosticar hacia atrás el inventario futuro de la empresa.

Así que la fórmula debe parecerse a algo así como:

IF(Inventario de la empresa - Inventario de fábrica<-0; Inventario de importación más reciente; Inventario de la empresa - Inventario de fábrica)

Así que la parte roja no funciona para mí. He probado varias fórmulas diferentes como Lastdate, Max Date with ALL, ALLSelected etc. pero de alguna manera sólo calcula el último valor solamente y no sé cómo rellenar filas futuras.

FechaInventario de la empresaInventario de fábricaInventario de importación
Ene 20201005050
Febrero 20201106050
Mar 2020903060
Abr 2020 4060
Mayo de 2020 9060

¿Tiene sentido? ¡Gracias por la ayuda!

5 REPLIES 5
V-lianl-msft
Microsoft
Microsoft

Hola @jgeisslinger ,

Usted puede referirse a esta medida, tal vez hay una manera más simple.

Measure = 
var i_i = MAX(Sheet2[Company Inventory])-MAX(Sheet3[Factory Inventory])
VAR LAST_DATE = CALCULATE(MAX(Sheet2[Date]),ALL(Sheet2))
VAR LAST_C_I = CALCULATE(MAX(Sheet2[Company Inventory]),FILTER(ALL(Sheet2),Sheet2[Date]=LAST_DATE))
VAR LAST_I_I = CALCULATE(LAST_C_I-MAX(Sheet3[Factory Inventory]),FILTER(ALL(Sheet3),Sheet3[Date]=LAST_DATE))
RETURN IF(i_i<0,LAST_I_I,i_i)

test_max_dateCapture.PNG

Muestra .pbix

Saludos
Liang
Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Hola @V-lianl-msft @camargos88

gracias por sus respuestas. Intenté ambos y tal vez me perdí alguna información importante para entender el problema:

1. La tabla A que contiene el inventario de la empresa no contiene uno sino varios valores por mes, ya que tiene el inventario por centro y producto. Así que básicamente el total por mes es la SUMA del inventario de columnas. Adapté el forumla usando SUM en lugar de MAX.

2. La tabla B que contiene el inventario de fábrica tiene el formato de la forma en que tenemos una columna de valor y una columna de atributo. Así que para obtener el inventario debemos usar TableB[Value]; TablaB[Atributo]-"Inventario". También aquí tenemos múltiples entradas por mes como es por planta. Así que también debemos usar SUM en lugar de MAX.

Después de realizar ajustes muestra el valor correcto para los meses pasados, pero sigue en blanco para los meses futuros. También extraje las diferentes variables para poseer medidas y los valores se calculan correctamente al lado del hecho de que la fecha máxima no es correcta o filtrada por fila.

¿En qué mesa de inicio se debe utilizar?

Ambas tablas tienen un ámbito de fecha diferente. En el objeto visual de la tabla utilizo el campo de fecha de la tabla B, ya que contiene también fechas futuras.

VAR TEST 4 = 
var i_i = 'TableA'[VAR Qty in tons]-'TableB'[VAR Inventory Actuals]
var LAST_DATE = CALCULATE(MAX('TableA'[Date]);ALL('TableA'))
var LAST_C_Inventory = CALCULATE('TableA'[VAR Qty in tons];FILTER(ALL('TableA');'TableA'[Date]=LAST_DATE))
var LAST_I_INVENTORY = CALCULATE(LAST_C_Inventory-CALCULATE(SUM('TableB'[Value]);'TableB'[Attribute]="Inventory");FILTER(ALL('TableB');'TableB'[Date]=LAST_DATE))
RETURN
IF(i_i<=0;LAST_I_INVENTORY;i_i)

Snap3.png

¡Gracias!

Hola @jgeisslinger ,

¿Este problema es querido?

He recreado la medida y actualizado la muestra pbix.

Measure2 = 
var i_i = SUM(Sheet2[Company Inventory])-SUM(Sheet3[Factory Inventory])
VAR LAST_DATE = CALCULATE(FORMAT(MAX(Sheet2[Date]),"yyyy-mm"),ALL(Sheet2))
VAR LAST_C_I = CALCULATE(SUM(Sheet2[Company Inventory]),FILTER(ALL(Sheet2),FORMAT(Sheet2[Date],"yyyy-mm")=LAST_DATE))
VAR LAST_I_I = CALCULATE(LAST_C_I-SUM(Sheet3[Factory Inventory]),FILTER(ALL(Sheet3),FORMAT(Sheet3[Date],"yyyy-mm")=LAST_DATE))
RETURN IF(i_i<0,LAST_I_I,i_i)

Saludos
Liang
Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Hola @jgeisslinger ,

¿Cuál es la relación entre las dos tablas?
Ya que no puedo ver su archivo pbix, usted puede tratar de pensar en una solución como esta.
En primer lugar, calcule el "inventario de importación"
Si desea que la fecha futura muestre el último "inventario de importación", primero debe obtener el mes y el año de la fecha máxima de la tabla A.
A continuación, calcule el "inventario de la empresa" del mes actual, utilice lastdate como condición de filtro de la tabla B para calcular el último "inventario de importación" y, finalmente, utilice la instrucción de condición if.

Saludos
Liang
Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

camargos88
Super User III
Super User III

Hola @jgeisslinger ,

Pruebe este código para crear una nueva columna calculada:

NewColumn ?
IF(
'Table'[Inventario de la empresa] - 'Tabla'[Inventario de fábrica] <-0;
CALCULATE(SUM('Table'[Import Inventory]); FILTER(ALL('Table'[Date]); 'Tabla'[Fecha] - EARLIER('Tabla'[Fecha])));
'Table'[Inventario de la empresa] - 'Tabla'[Inventario de fábrica])
O puede crear con Max Date cuando no está en blanco:
X -
IF(
'Table'[Inventario de la empresa] - 'Tabla'[Inventario de fábrica] <-0;
VAR _date á 'Tabla'[Fecha]
VAR _MaxDate - CALCULATE(MAX('Table'[Date]); FILTER(ALL('Table'[Import Inventory]); ISBLANK('Tabla'[Importar inventario]) á FALSE()))
RETURN CALCULATE(SUM('Table'[Import Inventory]); FILTER(ALL('Table'[Date]); 'Tabla'[Fecha] - _MaxDate));
'Table'[Inventario de la empresa] - 'Tabla'[Inventario de fábrica])
Ricardo


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!



Helpful resources

Announcements
PBI User Groups

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group

March Update

Check it Out!

Click here to read more about the March 2021 Updates!

secondImage

The largest Power BI virtual conference

100+ sessions, 100+ speakers, Product managers, MVPs, and experts. All about Power BI. Attend online or watch the recordings.

secondImage

Experience what’s next for Power BI

See the latest Power BI innovations, updates, and demos from the Microsoft Business Applications Launch Event.