¿Utiliza una tabla de auditoría para mostrar el estado de las cosas en un momento arbitrario? No tengo ni idea.

Un usuario Pregunto ✅

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 forma de pago, es fácil.

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? cualquier diferente hace 1 semana, hace 2 semanas? etc

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!

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 . carita feliz

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
        )
    )

c2.PNG

Saludos

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 . carita feliz

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
        )
    )

c2.PNG

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!

Deja un comentario

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