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
Anonymous
Not applicable

Comparar 2 tablas - Confirmar está presente, no presente o inesperado

Hola

Estoy tratando de comparar 2 tablas con fechas para confirmar si hemos recibido un artículo

  • Horario de la Tabla 1 a las fechas previstas
  • Tabla 2 artículos recibidos

He intentado menos las 2 tablas relacionadas de la siguiente manera:

Status = 

SUMX('Reporting Schedule', 
(DISTINCTCOUNT('Reporting Schedule'[Submission Period +1]))

-
 (DISTINCTCOUNT(_A_Combined[spm_reporting_period]))

)

La expectativa (o esperanza) es que recibiría

  • -1 - No se espera, pero se recibe
  • 0 - Esperado y recibido
  • 1 - Esperado y NO recibido.
1 ACCEPTED SOLUTION

@Oneill1

Ok, a ver si esto es lo que necesitas.

Por cierto, las relaciones entre la tabla Date y las tablas de hechos son de varios a varios (que pueden generar resultados inesperados y deben evitarse).
Puesto que estamos viendo los períodos, he agregado una tabla de períodos como una tabla tenue para ambas tablas de hechos que se utilizarán en los objetos visuales (evitando así las temidas relaciones de varios a varios de la tabla Date).
Model.JPG

Las nuevas medidas utilizadas:
1) Sobresaliente:

Outstanding (New) = 
VAR Sched = SUMMARIZE('Reporting Schedule', 'Reporting Schedule'[Contract Number], 'Reporting Schedule'[Reporting Period])
VAR _Received = SUMMARIZE('Received', 'Received'[Contract Number], 'Received'[Reporting Period])
RETURN
COUNTROWS(EXCEPT(Sched, _Received))

2) Recibido:

Received (New) = 
VAR Sched = SUMMARIZE('Reporting Schedule', 'Reporting Schedule'[Contract Number], 'Reporting Schedule'[Reporting Period])
VAR _Received = SUMMARIZE('Received', 'Received'[Contract Number], 'Received'[Reporting Period])
RETURN
COUNTROWS(INTERSECT(Sched, _Received))

3) Inesperado:

Unexpected New = 
VAR Sched = SUMMARIZE('Reporting Schedule', 'Reporting Schedule'[Contract Number], 'Reporting Schedule'[Reporting Period])
VAR _Received = SUMMARIZE('Received', 'Received'[Contract Number], 'Received'[Reporting Period])
RETURN
COUNTROWS(EXCEPT(_Received, Sched))

Y este es el resultado final:

New measures.JPG

Vea si este es el resultado final que necesita.

Se adjunta el nuevo archivo PBIX

View solution in original post

10 REPLIES 10
PC2790
Community Champion
Community Champion

No @Oneill1 ,

Echamos un vistazo a tu modelo de datos y parece que hay muchas cosas que hay que corregir. Pocos de ellos son:

1) La tabla Recibido no contiene la fecha exacta, así que ¿qué será el indicador si el producto ha sido recibido?

2) La relación entre la tabla Esperada y Recibida debe basarse en el contrato y no en las fechas. Actualmente es entre el período de informes que es de tipo de datos de texto y fecha que tiene tipo de datos DateTime que no tiene ningún sentido en absoluto.

Por lo tanto, en conclusión, tendrá que buscar una columna única en ambas tablas en función de la cual se puede formar la relación para llevar a cabo más operaciones.

Y los tipos de datos de las columnas deben corregirse. Además, mire la información necesaria de la fecha de recepción para que pueda obtener el resultado deseado.

Anonymous
Not applicable

no @PC2790

Gracias por la respuesta

He actualizado el modelo ligeramente, ya que no estaba realmente reflejando lo que está disponible en el archivo y los enlaces.

para tratar de articular lo que estoy tratando de lograr.

Tenemos un cronograma para cada contrato, ya que el presente el equipo rellena manualmente una hoja de Excel con la fecha en que se reciben los envíos

Submission sheets (Dans).jpg

Esta tabla es entonces unpivoted in powerbi para dejar 2 columnas, eliminando todas aquellas que no tienen contenido

  • Período de notificación (la cabecera de columna)
  • fecha de envío (los valores de celda)

Dentro de la base de datos dinámica. los datos contendrán una línea para cada métrica y tipo de contrato, número de contrato y período de

received Mock D365.jpg

Están vinculados entre sí a través de

  • Una tabla de fechas (que convierte la fecha en el período del informe),
  • Tabla de contratos, que contiene el nombre del proveedor, el identificador de contrato y el tipo de contrato (tecnología, diseño, etc.)

Lo que estoy tratando de lograr es como sigue

  1. mira mi calendario de envíos
  2. comparar con mi tabla recibida (D365)
  3. itentify el estatus
    1. período de informe de la tabla de envíos: recuento distinto (ya que habrá una línea para cada métrica) tabla recibida (D365) período de informe
      • 1 - dentro de la tabla de sumisión, no dentro de la tabla recibida (D365)
      • 0o dentro de ambas tablas
      • -1 - Dentro de la tabla recibida (D365), no se espera dentro de la tabla de presentación.

lo que estamos tratando de lograr es cuánto trabajo queda para que el equipo comte. Si hay otra manera im falta, por favor hágamelo saber, pensé que esta puede ser la manera más fácil, ya que ambos tendrán el período de reporte en el mismo formato.

Gracias de nuevo

PC2790
Community Champion
Community Champion

Según mi entendimiento de que soy capaz de obtener la información proporcionada, sugeriría crear una columna única que se usará para un atributo común en la tabla De recepción e informes.

Creé una nueva columna en ambas tablas como:

Contract_type de la lista de informes : CONCATENATE('Reporting Schedule'[Número de contrato],'Programa de informes'[Tipo])
Contract_type concatenar('Received'[Número de contrato],'Recibido'[Tipo])
Y luego, basándome en este valor, creé otra columna para rastrear el estado. La lógica va como abajo:
Si hay algún valor correspondiente en la tabla Recibido, significa que el pedido se ha recibido de nuevo, marcará como no recibido. DAX utilizado como se muestra a continuación:
Contract_Status á if(not(ISBLANK(LOOKUPVALUE('Reporting Schedule'[Contract_type],'Reporting Schedule'[Contract_type],'Reporting Schedule'[Contract_type]))),"Received","Not yet received")
Por favor, sugiera si esta solución en particular resuelve su propósito.
Gracias
Anonymous
Not applicable

Hola @AlB y @PC2790

Gracias por las respuestas. He actualizado el dax ligeramente, como he lanzado el schdule de informes sólo tendría 1 valor y el archivo recibido contendrá mutiple y requerirá distinctcount creo (una línea para cada métrica), sin embargo, todavía experienciando algunos problemas.

Status = 

SUMX('Reporting Schedule', 
(COUNT('Reporting Schedule'[Expected date]))- 
(DISTINCTCOUNT('Received'[Reporting Period]))
)

Enlaces a los archivos a continuación, las relaciones i miedo estoy atascado con ya que hay muchas más tablas vinculadas a este archivo, ya que extrae datos de 3 fuente principal (Dinámica para los datos de rendimiento y 2 tablas maestras que se basan en la actualidad para las finanzas)

Power BI

Ejemplo de archivo de origen

Carpeta

Relación de archivo real

Actual file.jpg

Archivo adjunto

  • Recibidos A_Combined
  • Fecha: M_Date_table
  • programa de informes - Mismo
  • Tarea de Trabajo - Contratos

Sample file.jpg

@Oneill1

No estoy muy seguro de qué es exactamente lo que está tratando de identificar. He construido lo siguiente bajo el supuesto de que está comparando Contratos, tipo y períodos entre las dos tablas:

1) Para calcular los Contratos Programados pero no recibidos:

Scheduled not received = 
VAR Sched = SELECTCOLUMNS('Reporting Schedule', "Contract", 'Reporting Schedule'[Contract Number], "Type", 'Reporting Schedule'[Type], "Period", 'Reporting Schedule'[Reporting Period])
VAR _Received = SELECTCOLUMNS('Received', "Contract", 'Received'[Contract Number], "Type", 'Received'[Type], "Period", 'Received'[Reporting Period])
RETURN
COUNTROWS(EXCEPT(Sched, _Received))

2) Para calcular los contratos programados y recibidos:

Scheduled & received = 
VAR Sched = SELECTCOLUMNS('Reporting Schedule', "Contract", 'Reporting Schedule'[Contract Number], "Type", 'Reporting Schedule'[Type], "Period", 'Reporting Schedule'[Reporting Period])
VAR _Received = SELECTCOLUMNS('Received', "Contract", 'Received'[Contract Number], "Type", 'Received'[Type], "Period", 'Received'[Reporting Period])
RETURN
COUNTROWS(INTERSECT(Sched, _Received))

3) Para calcular los contratos recibidos pero no programados:

Received not Scheduled = 
VAR Sched = SELECTCOLUMNS('Reporting Schedule', "Contract", 'Reporting Schedule'[Contract Number], "Type", 'Reporting Schedule'[Type], "Period", 'Reporting Schedule'[Reporting Period])
VAR _Received = SELECTCOLUMNS('Received', "Contract", 'Received'[Contract Number], "Type", 'Received'[Type], "Period", 'Received'[Reporting Period])
RETURN
COUNTROWS(EXCEPT(_Received, Sched))

Lo que te consigue esto:

Result.JPG





Did I answer your question? Mark my post as a solution!
In doing so, you are also helping me. Thank you!

Proud to be a Super User!
Paul on Linkedin.






No @PaulDBrown

Creo que puede haber más complicado en la primera solicitud

Tenemos un rastreador de envíos cuando los envíos deben ser recibidos, el encabezado de la columna es el período del informe

Submission tracker.jpg

Tenemos base de datos de lo que se recibe.

received example.jpg

Estos están vinculados entre sí por el número de contrato (tarea de trabajo) y una tabla de fechas.

Contracts table 2.jpg

Estamos tratando de confirmar

Lo que está en el rastreador de envío y presente

  • Número total de lo que se debe para el período (cada contrato siguiendo diferentes programas de presentación de informes
  • El número de presentaciones que se han recibido
  • El número pendiente
  • El número que inesperadamos y enviamos a la base de datos incorrectamente.

El URN entre cada tabla es la tarea Número de contrato /Trabajo

Contracts table 2.jpg

Sólo nos interesa si hemos recibido una presentación, no el volumen de envíos recibidos en un mes determinado que coincidan con la URN.

Usando el ejemplo:

  • Tenemos el tipo (Prog) Zapatos, entrenadores y bombas.
  • Nombre del contrato (esquema) como Dr martins, Nike, Cons

Las tablas de horarios confirman cuándo estaríamos esperando una entrega / envío. La tabla recibida (la base de datos) confirma cuándo se ha recibido la entrega y el número de elementos (métricas).

¿Es posible utilizar medidas para

  • Identificar el número total de lo que se debe para el período (nombre de cada contrato)
  • El número de presentaciones que se han recibido
  • El número pendiente
  • El número que fue inesperado y se envió a la base de datos incorrectamente.

He actualizado los archivos de origen para, con suerte, pintar una mejor imagen

Power BI

Ejemplo de archivo de origen

Carpeta

@Oneill1

Ok, a ver si esto es lo que necesitas.

Por cierto, las relaciones entre la tabla Date y las tablas de hechos son de varios a varios (que pueden generar resultados inesperados y deben evitarse).
Puesto que estamos viendo los períodos, he agregado una tabla de períodos como una tabla tenue para ambas tablas de hechos que se utilizarán en los objetos visuales (evitando así las temidas relaciones de varios a varios de la tabla Date).
Model.JPG

Las nuevas medidas utilizadas:
1) Sobresaliente:

Outstanding (New) = 
VAR Sched = SUMMARIZE('Reporting Schedule', 'Reporting Schedule'[Contract Number], 'Reporting Schedule'[Reporting Period])
VAR _Received = SUMMARIZE('Received', 'Received'[Contract Number], 'Received'[Reporting Period])
RETURN
COUNTROWS(EXCEPT(Sched, _Received))

2) Recibido:

Received (New) = 
VAR Sched = SUMMARIZE('Reporting Schedule', 'Reporting Schedule'[Contract Number], 'Reporting Schedule'[Reporting Period])
VAR _Received = SUMMARIZE('Received', 'Received'[Contract Number], 'Received'[Reporting Period])
RETURN
COUNTROWS(INTERSECT(Sched, _Received))

3) Inesperado:

Unexpected New = 
VAR Sched = SUMMARIZE('Reporting Schedule', 'Reporting Schedule'[Contract Number], 'Reporting Schedule'[Reporting Period])
VAR _Received = SUMMARIZE('Received', 'Received'[Contract Number], 'Received'[Reporting Period])
RETURN
COUNTROWS(EXCEPT(_Received, Sched))

Y este es el resultado final:

New measures.JPG

Vea si este es el resultado final que necesita.

Se adjunta el nuevo archivo PBIX

Esto es genial, empiezo a entenderlo un poco más ahora. es una curva de aprendizaje empinada que estoy aprendiendo más cada día.

Gracias, realmente aprecio la ayuda.

Lee

PC2790
Community Champion
Community Champion

No @Oneill1 ,

La lógica de la expresión DAX que ha aplicado se ve bien y debe resolver el propósito, sin embargo, fallará en varias condiciones como: valores nulos o en blanco en cualquiera de las columnas

Proporcione los datos de ejemplo para probar la implementación. Además, explique claramente qué problema se enfrenta aquí.

AlB
Super User
Super User

No @Oneill1

¿Puede mostrar una muestra de sus 2 mesas?

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

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.