mmace1
Hola,
En mi empresa tenemos clientes, que a su vez tienen proveedores que aceptan diversas formas de pago. Resumiendo digamos, en este momento, cuántos de los proveedores de un cliente aceptan
Aquí hay un vistazo a una versión modificada/truncada de la tabla que usaríamos para eso. La columna Tipo de pago tiene los datos que estamos buscando.
VendorListID | Número de cliente | ID de proveedor | Identificación extranjera | Nombre | Dirección Línea 1 | Medio | Tipo de pago |
3055021 | 665-004 | EDE60B3C-7E89-4 | COG275 | Nombre de ejemplo 1 | Dirección 1 | DE15CFC4-7827-4 | 1212 |
3055020 | 665-004 | 29146617-E12B-4 | CEN036 | Nombre de ejemplo 2 | Dirección 2 | 2B77CA02-1999-4 | 1212 |
3055019 | 665-004 | E7A8D372-805F-4 | CBS100 | Nombre de ejemplo 3 | Dirección 3 | F241B631-5BCD-4 | 1212 |
3055018 | 665-004 | D6D4D794-5E70-4 | BER100 | Nombre de ejemplo 4 | Dirección 4 | 9E0E7251-C0BE-4 | 1212 |
3055017 | 665-004 | ABFED05D-286C-4 | ADV038 | Nombre de ejemplo 5 | Dirección 5 | 8E6CDFCA-2FA7-4 | 1212 |
3055016 | 928-007 | 37E90AE7-56D0-4 | 628703 | Nombre de ejemplo 6 | Dirección 6 | C1B761E7-79F4-4 | 1212 |
3055015 | 928-007 | 4E6C6E20-21BB-4 | 215823 | Nombre de ejemplo 7 | Dirección 7 | 8798A7B8-5752-4 | 1212 |
3055014 | 928-007 | 352F97B5-242A-4 | 15660 | Nombre de ejemplo 8 | Dirección 8 | 059B2F66-9B94-4 | 1212 |
3055013 | 928-007 | A6D2E12A-4DA5-4 | 15563 | Nombre de ejemplo 9 | Dirección 9 | F6DCCD9A-7410-4 | 1212 |
3055012 | 928-007 | EBFB1E08-CA41-4 | 15506 | Nombre de ejemplo 10 | Dirección 10 | 73C07C79-F258-4 | 1212 |
Pero entonces, ¿qué pasaría si quisiéramos ver, digamos, hace una semana, cuál era el estado de todos los proveedores de nuestros clientes? ¿Cómo ha cambiado desde la semana pasada? ¿Desde hace 2 semanas? Bueno, tenemos una tabla de auditoría que agrega una entrada cada vez que cambia el estado del pago:
VendorListPaymentTypeChangeAuditID | ID de proveedor | MasterVendorID | Tipo de pago | CreateDateUTC |
5975259 | 1472C3D5-8A7F-4 | C216849C-081D-4 | 612 | 13/9/2017 1:46 |
5975257 | 1472C3D5-8A7F-4 | C216849C-081D-4 | 612 | 13/9/2017 1:44 |
5971111 | 1472C3D5-8A7F-4 | C216849C-081D-4 | 612 | 12/9/2017 20:23 |
5971109 | 1472C3D5-8A7F-4 | C216849C-081D-4 | 612 | 12/9/2017 20:23 |
5937853 | 1472C3D5-8A7F-4 | C216849C-081D-4 | 1060 | 11/09/2017 14:26 |
5918780 | 1472C3D5-8A7F-4 | C216849C-081D-4 | 1060 | 07/09/2017 13:26 |
5918772 | 1472C3D5-8A7F-4 | C216849C-081D-4 | 1060 | 07/09/2017 13:23 |
5843005 | 1472C3D5-8A7F-4 | C216849C-081D-4 | 1060 | 29/8/2017 14:12 |
4760484 | 1472C3D5-8A7F-4 | C216849C-081D-4 | 1060 | 24/03/2017 17:31 |
4178081 | 1472C3D5-8A7F-4 | C216849C-081D-4 | 612 | 7/12/2016 21:11 |
Puede conectar los dos a través de VendorID (entre otras cosas). Una verificación manual es bastante fácil.
Pero, ¿cómo automatizar esto? CustomerTtable – AuditTtable es una relación de uno a muchos… sin mencionar que no buscamos extraer un solo dato de la tabla de auditoría, sino más bien verificar… ¿fue la entrada para el proveedor?
Básicamente, no entiendo cómo hacer esto, pero para conservar espacio, supongo que las tablas de auditoría dispuestas como las anteriores son típicas. ¿Alguien puede indicarme una dirección para mirar?
¡Gracias!
v-ljerr-msft
Hola @mmace1,
Si lo entiendo correctamente, debería poder usar la fórmula a continuación para crear una nueva columna de cálculo en Tabla CustomerT para obtener el tipo de pago la semana pasada para el proveedor
Payment Type Last Week = VAR currentVendorId = CustomerT[VendorId] VAR currentDate = CALCULATE ( MAX ( AuditT[CreateDateUTC] ), FILTER ( AuditT, AuditT[VendorId] = currentVendorId ) ) VAR lastCreateDate = CALCULATE ( MAX ( AuditT[CreateDateUTC] ), FILTER ( AuditT, AuditT[CreateDateUTC] <= currentDate - 6 && AuditT[VendorId] = currentVendorId ) ) RETURN CALCULATE ( MAX ( AuditT[PaymentType] ), FILTER ( AuditT, AuditT[CreateDateUTC] = lastCreateDate && AuditT[VendorId] = currentVendorId ) )
Y el Tipo de pago hace dos semanas.
Payment Type Two Weeks ago = VAR currentVendorId = CustomerT[VendorId] VAR currentDate = CALCULATE ( MAX ( AuditT[CreateDateUTC] ), FILTER ( AuditT, AuditT[VendorId] = currentVendorId ) ) VAR lastCreateDate = CALCULATE ( MAX ( AuditT[CreateDateUTC] ), FILTER ( AuditT, AuditT[CreateDateUTC] <= currentDate - 13 && AuditT[VendorId] = currentVendorId ) ) RETURN CALCULATE ( MAX ( AuditT[PaymentType] ), FILTER ( AuditT, AuditT[CreateDateUTC] = lastCreateDate && AuditT[VendorId] = currentVendorId ) )
Saludos
v-ljerr-msft
Hola @mmace1,
Si lo entiendo correctamente, debería poder usar la fórmula a continuación para crear una nueva columna de cálculo en Tabla CustomerT para obtener el tipo de pago la semana pasada para el proveedor
Payment Type Last Week = VAR currentVendorId = CustomerT[VendorId] VAR currentDate = CALCULATE ( MAX ( AuditT[CreateDateUTC] ), FILTER ( AuditT, AuditT[VendorId] = currentVendorId ) ) VAR lastCreateDate = CALCULATE ( MAX ( AuditT[CreateDateUTC] ), FILTER ( AuditT, AuditT[CreateDateUTC] <= currentDate - 6 && AuditT[VendorId] = currentVendorId ) ) RETURN CALCULATE ( MAX ( AuditT[PaymentType] ), FILTER ( AuditT, AuditT[CreateDateUTC] = lastCreateDate && AuditT[VendorId] = currentVendorId ) )
Y el Tipo de pago hace dos semanas.
Payment Type Two Weeks ago = VAR currentVendorId = CustomerT[VendorId] VAR currentDate = CALCULATE ( MAX ( AuditT[CreateDateUTC] ), FILTER ( AuditT, AuditT[VendorId] = currentVendorId ) ) VAR lastCreateDate = CALCULATE ( MAX ( AuditT[CreateDateUTC] ), FILTER ( AuditT, AuditT[CreateDateUTC] <= currentDate - 13 && AuditT[VendorId] = currentVendorId ) ) RETURN CALCULATE ( MAX ( AuditT[PaymentType] ), FILTER ( AuditT, AuditT[CreateDateUTC] = lastCreateDate && AuditT[VendorId] = currentVendorId ) )
Saludos
mmace1
En respuesta a v-ljerr-msft
Guau… esa no es una fórmula tan larga, pero todavía no la entiendo. Aunque parece funcionar, ¡gracias!