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

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.

Reply
Syndicate_Admin
Administrator
Administrator

Comparar fechas de diferentes tablas y Dax dinámico

Query12.PNG

Tengo una tabla con 2 fechas presentadas fecha financiera y fecha transaccional y 3 importes de costo , valor de costo, ajuste de valor de costo, valor de costo phy. La fecha de transacción está en relación con la columna de fecha de la tabla de dimensiones de fecha.

Hay un campo de fecha de filtro de la dimensión de fecha. Necesito el siguiente DAX para debajo de sql.

caso cuando (A.[Fecha financiera] <> '1900-01-01' y A.[Fecha financiera] <- '27/1/2020)

entonces (A.[Importe de coste] + A.[Ajuste del importe del coste]) más (A.[Coste importe físico]).

El 27/1/2020 debe ser dinámico cuando pasemos el 24/1/2020.

Pero necesito el valor de selectedvalue de la cortadora

Debe ser el valor de la fecha financiera correspondiente, no el valor de la tabla de fechas.

Por ejemplo, la fecha financiera es 27/2/2020 , la fecha de transacción correspondiente es 24/3/2020. Cuando nosotros 24/3/2020, debe tomar 27/2/2020 en el Dax.

Tengo alrededor de 7 millones de filas, así que acabo de pegar un dato de muestra.

Por favor, ayúdenme. Gracias de antemano

1 ACCEPTED SOLUTION

Inventario1 ?

VAR max_date-CALCULATE(MAX('Date'[Date]),ALL('Date'))

VAR END_DATE-ENDOFMONTH('Fecha'[Fecha])

VAR START_DATE-CALCULATE(min('Date'[Date]),ALL('Date'))

devolución

CALCULATE(SUM('1 Inventory Value'[Cost Amount])+SUM('1 Inventory Value'[Cost Amount Adjustment]),FILTER('1 Inventory Value',('1 Inventory Value'[Financial Date]<-END_DATE && '1 Valor de inventario'[Fecha financiera]>'START_DATE) && '1 Valor de inventario'[Fecha financiera]<>FECHA(1900,01,01)&& '1 Valor de inventario'[Tipo de registro]

"Física", "Financiero"-),ALL('Date'))

+

CALCULATE(SUM('1 Inventory Value'[Cost Amount Physical]),FILTER('1 Inventory Value',('1 Inventory Value'[Financial Date]<max_date && '1 Inventory Value'[Financial Date]>?START_DATE) &&(('1 Inventory Value'[Financial Date]>END_DATE || '1 Valor de inventario'[Fecha financiera]-FECHA(1900,01,01))&& '1 Valor de inventario'[Tipo de contabilización]

"Física", "Financiero" )

Inventario2 ?

CALCULAR (

[Inventario1],

ALL ( 'Fecha'[Fecha]),

datesween( 'Date'[Date], blank(), lastdate('Date'[Date]))

)

Y usé Inventory2 y funcionó perfectamente. Gracias a todos por dar algunas pistas.

View solution in original post

8 REPLIES 8
Syndicate_Admin
Administrator
Administrator

Hola señor,

Tengo el tipo similar de pregunta.

Acabo de empezar a usar mi Power BI.

Tengo 2 hojas de exel diferentes cargadas en Power BI.

La hoja 1 contiene todos los detalles con algunos números de código.

la hoja 2 contiene los datos que deben corregirse con pocos códigos.

para ex: hoja 1 tiene todos los códigos 1,2,3,4.......300

hoja 2 tiene códigos: 2 (de la hoja 1) necesita ser reemplazado por 1 y 15 (de la hoja 1) necesita reemplazar con 2 y así sucesivamente.

Ahora 1 desea agregar una nueva columna en power BI (hoja 1)

como: si la hoja 1 tiene códigos con 1,2, y >52 entonces necesita replced con códigos de la hoja 2.

¿Puedes por favor ayudarme en esto

Syndicate_Admin
Administrator
Administrator

¿Puede alguien ayudar en esto por favor

Inventario1 ?

VAR max_date-CALCULATE(MAX('Date'[Date]),ALL('Date'))

VAR END_DATE-ENDOFMONTH('Fecha'[Fecha])

VAR START_DATE-CALCULATE(min('Date'[Date]),ALL('Date'))

devolución

CALCULATE(SUM('1 Inventory Value'[Cost Amount])+SUM('1 Inventory Value'[Cost Amount Adjustment]),FILTER('1 Inventory Value',('1 Inventory Value'[Financial Date]<-END_DATE && '1 Valor de inventario'[Fecha financiera]>'START_DATE) && '1 Valor de inventario'[Fecha financiera]<>FECHA(1900,01,01)&& '1 Valor de inventario'[Tipo de registro]

"Física", "Financiero"-),ALL('Date'))

+

CALCULATE(SUM('1 Inventory Value'[Cost Amount Physical]),FILTER('1 Inventory Value',('1 Inventory Value'[Financial Date]<max_date && '1 Inventory Value'[Financial Date]>?START_DATE) &&(('1 Inventory Value'[Financial Date]>END_DATE || '1 Valor de inventario'[Fecha financiera]-FECHA(1900,01,01))&& '1 Valor de inventario'[Tipo de contabilización]

"Física", "Financiero" )

Inventario2 ?

CALCULAR (

[Inventario1],

ALL ( 'Fecha'[Fecha]),

datesween( 'Date'[Date], blank(), lastdate('Date'[Date]))

)

Y usé Inventory2 y funcionó perfectamente. Gracias a todos por dar algunas pistas.

Syndicate_Admin
Administrator
Administrator

@Rajashekhar , Prefiere tener una tabla de fechas independiente en este caso e intentar medir

medida :
var _max á maxx(Filter(allselected(A), [Datos de transacción] - selectedValue(Date[Date])), A[Financial Date])
devolución
calculate(sumx(A,A[Cost Amount] + A[Cost Amount Adjustment]), filter(A, A[Financial Date] <-_max)) +calculate(sum(A[Cost Amount Physica]), filter(A, A[Financial Date] >_max))

Si la fecha está conectada
medida :
var _max á maxx(Filter(allselected(A), [Datos de transacción] - selectedValue(Date[Date])), A[Financial Date])
devolución
calculate(sumx(A,A[Cost Amount] + A[Cost Amount Adjustment]), filter(A, A[Financial Date] <-_max),all(Date)) +calculate(A[Cost Amount Physica]), filter(A, A[Financial Date] >_max),all(date))

En primer lugar, muchas gracias Amit por la rápida respuesta.

Pero la fecha financiera no siempre es mayor que la fecha de transacción, a veces es menor que la fecha de transacción. Así que habrá discordancia en las variables para elegir Max!

@Rajashekhar, estoy tratando de tomar el máximo en la fecha seleccionada. [Datos de transacción] - selectedValue(Date[Date]), Hemos elegido entre en min o max [Fecha financiera] en la fecha de transacción seleccionada

En realidad, hay un filtro en la fecha de transacción. Supongo que tenemos que añadirlo. Por favor, encuentre a continuación la consulta. He agregado filtro de publicación en su consulta, pero no sé cómo agregar el filtro de fecha de transacción.

selectB. [Código de almacén],d.[Número de artículo],(A.Cantidad) como Invonhand, caso cuando (A.[Fecha financiera] <> '1900-01-01 00:00:00.000' y A.[Fecha financiera] <''2020-08-31 00:00:00') entonces (A.[Cost Amount] + A.[Cost Amount Adjustment]) else (A.[Cost Amount Physical])end as invvalue ,A.*from [dbo]. [FactInventoryValue] Una unión interna [dbo]. [DimInventoryDimension] Bon A.[Clave de dimensión de inventario] - B.[Clave de dimensión de inventario]unión interna [dbo]. [DimCompany] con A.[Clave de la empresa] á c.[Clave de la empresa] y c.[Nombre de la empresa] á 'BRIGHTSTAR URUGUAY S.A.' unión interna [dbo]. [DimProduct] don A.[Clave de producto] á d.[Clave de producto]donde A.[Tipo de publicación] en ('Físico','Financiero')y A.[Fecha de transacción] <' '2020-08-31 00:00:00'y A.[Fecha de transacción] <> '1900-01-01 00:00:00.000' ) tmpgroup por [Código de almacén], [Número de artículo].

Aquí está la consulta que u dio.

AmitQuery ?

var _max á MAXX(Filter(allselected('1 Inventory Value'), [TRANSACTIONAL_MONTH_YEAR] á selectedValue('Date'[Month])), '1 Inventory Value'[FINANCIAL_MONTH_YEAR])

devolución

calculate(sumx('1 Inventory Value','1 Inventory Value'[Cost Amount] + '1 Inventory Value'[Cost Amount Adjustment]), filter('1 Inventory Value', '1 Valor de inventario'[FINANCIAL_MONTH_YEAR] <-_max &&'1 Valor de inventario'[Tipo de contabilización] en "Físico", "Financiero" &&'1 Valor de inventario'[Valor de inventario financiero"[Valor de inventario financiero"Fecha]<>DATE(1900,1,1) ),ALL('Date'[Month])) + calculate(sum('1 Inventory Value'[Cost Amount Physical]), filter('1 Inventory Value' , '1 Valor de inventario'[FINANCIAL_MONTH_YEAR] >_max && '1 Valor de inventario'[Tipo de contabilización] en "Físico", "Financiero" && '1 Valor de inventario'[Fecha financiera]- fecha(1900,1,1)),ALL('Fecha'[Mes]))

Filtro es el formato del año mes que he cambiado en consecuencia.

Amit.PNG

Aquí deberíamos el valor 1,499,767,50 pero estamos recibiendo 1,453,419.00.

El filtro dado es febrero 2020.

Otro ejemplo a continuación.

amIT 1.PNG

Aquí necesitamos obtener 605,142.92 pero como los datos se filtran para feb 2020, estamos recibiendo 0!!! Y hay otros 2 filtros uno es año y otro es el nombre de la empresa.

En realidad, hay un filtro en la fecha de transacción. Supongo que tenemos que añadirlo. Por favor, encuentre a continuación la consulta. He agregado filtro de publicación en su consulta, pero no sé cómo agregar el filtro de fecha de transacción.

selectB. [Código de almacén],d.[Número de artículo],(A.Cantidad) como Invonhand, caso cuando (A.[Fecha financiera] <> '1900-01-01 00:00:00.000' y A.[Fecha financiera] <''2020-08-31 00:00:00') entonces (A.[Cost Amount] + A.[Cost Amount Adjustment]) else (A.[Cost Amount Physical])end as invvalue ,A.*from [dbo]. [FactInventoryValue] Una unión interna [dbo]. [DimInventoryDimension] Bon A.[Clave de dimensión de inventario] - B.[Clave de dimensión de inventario]unión interna [dbo]. [DimCompany] con A.[Clave de la empresa] á c.[Clave de la empresa] y c.[Nombre de la empresa] á 'BRIGHTSTAR URUGUAY S.A.' unión interna [dbo]. [DimProduct] don A.[Clave de producto] á d.[Clave de producto]donde A.[Tipo de publicación] en ('Físico','Financiero')y A.[Fecha de transacción] <' '2020-08-31 00:00:00'y A.[Fecha de transacción] <> '1900-01-01 00:00:00.000' ) tmpgroup por [Código de almacén], [Número de artículo].

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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