wilson
Tengo datos del año financiero 2019 (actualmente en 19 millones de filas de datos y creciendo). La idea es actualizar estos datos a través de una actualización incremental (y, por lo que sé, funciona) fuera de la base de datos de Oracle.
Tengo datos del año financiero 2018 (es decir, 55 000 filas de datos). Estos datos provienen de una fuente diferente y existen en una tabla separada fuera de la base de datos de Oracle. Estos datos nunca cambiarán.
Entonces, en PowerQuery, la tabla principal (con la actualización incremental), agregué los datos del año fiscal 2018.
El problema que tengo es que después de una sola actualización en la nube, los datos del año fiscal 2019 se ven muy bien. Los datos del año fiscal 2018 se han multiplicado unas 56 veces… el número de filas de datos ha crecido significativamente. Claramente no es lo que quiero.
¿Puedo fusionar una tabla de actualización incremental con una tabla estática?
Todas mis medidas y columnas adicionales deben operar sobre la única tabla combinada.
– David
wilson
En respuesta a wilson
Este problema puede resolverse. Para ser confirmado.
He agregado los parámetros RangeStart y RangeEnd a la tabla FY18, por lo que ahora están en dos tablas.
Y hice clic derecho en la tabla FY18 y también agregué la especificación de actualización incremental a esa tabla; anteriormente solo estaba en la tabla FY19+.
La prueba de actualización inicial ha tenido éxito.
v-juanli-msft
Hola @dgwilson
No puedo reproducir su problema, ¿podría mostrar más detalles para que pueda reproducir este problema?
Consulte este artículo, hágame saber cómo configura el parámetro “RangoInicio» y “Final de rango”,
además política de almacenamiento de filas y política de actualización de filas en el Ventana de actualización incremental.
Atentamente
Maggie
Equipo de apoyo comunitario _ Maggie Li
Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución. para ayudar a los otros miembros a encontrarlo más rápidamente.
wilson
En respuesta a v-juanli-msft
Aquí está el código M (es más fácil de mostrar aquí que una serie de capturas de pantalla).
Esto toma la tabla FY19 – EVO_DMT_BUS_CUST_PROFIT_VW
Lo filtra con las definiciones de RangeStart y RangeEnd
Elimina columnas no deseadas
He comprobado en este punto que la consulta nativa todavía está bien (es decir, haga clic con el botón derecho en Columnas eliminadas: Ver consulta nativa).
Puede ver en el código M donde se adjuntan los datos del año fiscal 2018.
let Source = Oracle.Database("revenp", [HierarchicalNavigation=true]), REVENUE = Source{[Schema="REVENUE"]}[Data], EVO_DMT_BUS_CUST_PROFIT_VW1 = REVENUE{[Name="EVO_DMT_BUS_CUST_PROFIT_VW"]}[Data], #"Filtered Rows" = Table.SelectRows(EVO_DMT_BUS_CUST_PROFIT_VW1, each [RPT_MONTH] >= RangeStart and [RPT_MONTH] < RangeEnd), #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"CUST_PROFIT_ID", "BUS_TRANS_ID", "DEEMED_COST_PERC", "CO_CODE", "SALES_CHANNEL", "PORTFOLIO", "DOC_TYPE", "REFDOC_NO", "REFDOC_DESC", "DOCUMENTNO", "SAP_RECORD_NO", "SALES_ORDER", "PURCHASE_DOC", "VENDOR_CODE", "NETWORK_ID", "AMOUNT_TC", "CURR_TC", "PC_LEVEL1", "PC_LEVEL2", "PC_LEVEL3", "PC_LEVEL4", "PC_LEVEL5", "PC_LEVEL6", "GL_LEVEL8", "GL_LEVEL9", "GL_LEVEL10", "GL_LEVEL11", "PR_LEVEL1", "PR_LEVEL2", "PR_LEVEL3", "PR_LEVEL4", "PR_LEVEL5", "PR_LEVEL6", "DATA_TYPE_SUMMARY", "DATA_TYPE_DETAIL", "ICMS_GL", "ICMS_SUBTYPE", "TRAN_TYPE", "TRAN_CODE", "CALL_TYPE", "CALL_TYPE_DESC", "CHARGE_CODE", "ICMS_ACCOUNT_NO", "ICMS_CUSTOMER_NO", "ICMS_CUSTOMER_NAME", "CHARGE_AMT", "DISCOUNT_AMT_CP", "DISCOUNT_AMT_ABCALL", "DISCOUNT_AMT_ABOTHER", "DISCOUNT_AMT_PLUG", "BILL_CYCLE", "ADJ_DESC", "ADJ_BATCH_ID", "ADJ_REF_NO", "ICMS_INPUT_HASH", "MANUAL_INSERT_ID", "PR_LEVEL1_T2PH", "PR_LEVEL2_T2PH", "HEAD_PARTY_NO_CURR", "HEAD_PARTY_NAME_CURR", "PC_LEVEL1_CURR", "PC_LEVEL2_CURR", "PC_LEVEL3_CURR", "PC_LEVEL4_CURR", "PC_LEVEL5_CURR", "PC_LEVEL6_CURR", "GL_LEVEL8_CURR", "GL_LEVEL9_CURR", "GL_LEVEL10_CURR", "GL_LEVEL11_CURR", "PR_LEVEL1_CURR", "PR_LEVEL2_CURR", "PR_LEVEL3_CURR", "PR_LEVEL4_CURR", "PR_LEVEL5_CURR", "PR_LEVEL6_CURR"}), #"Changed Type" = Table.TransformColumnTypes(#"Removed Columns",{{"HEAD_PARTY_NO", type number}}), #"Appended Query" = Table.Combine({#"Changed Type", EVO_DMT_BUS_CUST_PROFIT_FY18}) in #"Appended Query"
A continuación se muestra la definición de RangeEnd: Range Start es el mismo (excepto que la fecha es un día anterior)
Y aquí está la definición de actualización incremental para la tabla.
Aquí están mis recuentos de filas ANTES de cargar y actualizar la nube.
El after lo haré en un post aparte mañana por la mañana.
– David
wilson
En respuesta a wilson
Y después de ejecutar la actualización incremental… esto es lo que obtengo…
He resaltado en rojo los datos del año fiscal 2018 que han cambiado, que no deberían haber cambiado.
Por cierto, el año fiscal es del 1 de julio al 30 de junio.
A continuación se muestra una imagen anotada para explicar mejor de lo que estoy hablando.
wilson
En respuesta a wilson
Este problema puede resolverse. Para ser confirmado.
He agregado los parámetros RangeStart y RangeEnd a la tabla FY18, por lo que ahora están en dos tablas.
Y hice clic derecho en la tabla FY18 y también agregué la especificación de actualización incremental a esa tabla; anteriormente solo estaba en la tabla FY19+.
La prueba de actualización inicial ha tenido éxito.
anthonyloh
En respuesta a wilson
Entonces, ¿los parámetros RangeStart y RangeEnd no filtran su tabla FY18 también? ¿Solo tu tabla FY19?
Gracias,
Antonio
wilson
En respuesta a anthonyloh
Hola @anthonyloh
Tengo esto funcionando ahora. Ambas tablas tienen filtrado rangestart y rangeend.
Lo que descubrí (una vez que mejoró el mensaje de error) fue que la tabla FY18 NO tenía una columna LAST_MODIFIED (fecha/hora) y que cuando se fusionó con la tabla principal, apareció con valores nulos. Cuando se ejecutó la actualización incremental… que comprueba LAST_MODIFIED… las cosas se autodestruyeron.
he destacado en AUDAZ las filas clave en ambas consultas.
Aquí está el código M para el FY18
let
Source = Oracle.Database("revenp", [HierarchicalNavigation=true]),
REVENUE = Source{[Schema="REVENUE"]}[Data],
EVO_DMT_BUS_CUST_PROFIT_FY1 = REVENUE{[Name="EVO_DMT_BUS_CUST_PROFIT_FY18"]}[Data],
#"Filtered Rows" = Table.SelectRows(EVO_DMT_BUS_CUST_PROFIT_FY1, each [RPT_MONTH] >= RangeStart and [RPT_MONTH] < RangeEnd),
#"Added Custom" = Table.AddColumn(#"Filtered Rows", "LAST_MODIFIED", each DateTime.Date(#datetime(2018, 07, 01, 00, 00, 00))),
#"Changed Type" = Table.TransformColumnTypes(#"Added Custom",{{"LAST_MODIFIED", type datetime}})
in
#"Changed Type"
aquí está el código M para la tabla principal … incluida la combinación
let
Source = Oracle.Database("revenp", [HierarchicalNavigation=true]),
REVENUE = Source{[Schema="REVENUE"]}[Data],
EVO_DMT_BUS_CUST_PROFIT_VW1 = REVENUE{[Name="EVO_DMT_BUS_CUST_PROFIT_VW"]}[Data],
#"Removed Other Columns" = Table.SelectColumns(EVO_DMT_BUS_CUST_PROFIT_VW1,{"DATA_SOURCE", "RPT_MONTH", "ENTRY_TEXT", "PL_CATEGORY", "AMOUNT_GC", "HL_PROD_CLASS", "DEEMED_COST_SOURCE", "DEEMED_COST_PERC", "DEEMED_COST_AMOUNT", "AMOUNT_GC_DISP_REV", "AMOUNT_GC_DISP_COST", "AMOUNT_GC_ACTUAL_COST", "SAP_ACCOUNT", "SAP_ACCOUNT_DESC", "SAP_PRODUCT", "SAP_PRODUCT_DESC", "PROFIT_CENTRE", "PROFIT_CENTRE_DESC", "QTY", "SAP_MATERIAL_CODE", "PARTNER_PROFIT_CENTRE", "WBSE", "WBSE_DESC", "PROJECT_CODE", "PROJECT_CODE_DESC", "CONTRACT_TYPE", "SALES_CHANNEL", "PORTFOLIO", "UNIT_OF_MEASURE", "DOC_TYPE", "ACTIVITY", "REFDOC_NO", "REFDOC_DESC", "SALES_ORDER", "PURCHASE_DOC", "VENDOR_CODE", "NETWORK_ID", "FIN_YEAR", "FIN_PERIOD", "POSTING_DATE", "DOC_DATE", "ENTRY_DATE", "USER_NAME", "USER_NAME_DESC", "PARKED_BY", "PARKED_BY_DESC", "DATA_TYPE_SUMMARY", "DATA_TYPE_DETAIL", "TRAN_TYPE", "TRAN_CODE", "SPOT_CODE", "SPOT_CODE_DESC", "CATS_EMPLOYEE_NO", "CATS_EMPLOYEE_NAME", "LAST_MODIFIED", "EXCLUSION_FLAG", "EXCLUSION_REASON", "HEAD_PARTY_NO_CURR", "HEAD_PARTY_NAME_CURR", "PC_LEVEL6_CURR", "PROJECT_CODE_DESC_CURR", "HL_PROD_CLASS_CURR"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Other Columns",{{"HEAD_PARTY_NO_CURR", "HEAD_PARTY_NO"}, {"HEAD_PARTY_NAME_CURR", "HEAD_PARTY_NAME"}}),
#"Filtered Rows" = Table.SelectRows(#"Renamed Columns", each [RPT_MONTH] >= RangeStart and [RPT_MONTH] < RangeEnd),
#"Trimmed Text" = Table.TransformColumns(#"Filtered Rows",{{"HEAD_PARTY_NO", Text.Trim, type text}}),
#"Renamed Columns1" = Table.RenameColumns(#"Trimmed Text",{{"HEAD_PARTY_NO", "HEAD_PARTY_NO_input"}, {"HEAD_PARTY_NAME", "HEAD_PARTY_NAME_input"}}),
#"Added Conditional Column" = Table.AddColumn(#"Renamed Columns1", "HEAD_PARTY_NO", each if [HEAD_PARTY_NO_input] = "N/ALEASING" then "" else if [HEAD_PARTY_NO_input] = "TBA" then "" else [HEAD_PARTY_NO_input]),
#"Changed Type2" = Table.TransformColumnTypes(#"Added Conditional Column",{{"HEAD_PARTY_NO", Int64.Type}}),
#"Added Conditional Column1" = Table.AddColumn(#"Changed Type2", "HEAD_PARTY_NAME", each if [HEAD_PARTY_NO_input] = "N/ALEASING" then [HEAD_PARTY_NO_input] else if [HEAD_PARTY_NO_input] = "TBA" then [HEAD_PARTY_NO_input] else [HEAD_PARTY_NAME_input]),
#"Changed Type" = Table.TransformColumnTypes(#"Added Conditional Column1",{{"PROFIT_CENTRE", type text}}),
#"Changed Type1" = Table.TransformColumnTypes(#"Changed Type",{{"QTY", type number}}),
#"Appended Query" = Table.Combine({#"Changed Type1", EVO_DMT_BUS_CUST_PROFIT_FY18})
in
#"Appended Query"
Todo ha estado funcionando como un sueño durante meses.
– David