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

Error OLE DB u ODBC: [DataSource.Error] ODBC: ERROR [42601] Error de compilación SQL: columna ambigua

Estoy usando DirectQuery con Snowflake y para uno de mis objetos visuales estoy recibiendo este error. Parece que se trata de un error con Power BI donde no está generando el SQL correctamente. Cuando miré la consulta que produjo DirectQuery en mi historial de consultas de Snowflake, me di cuenta del problema. Power BI había creado dos subconserncias principales y las había unido. Después de que se unieron, hay una cláusula WHERE que no tenía calificadores de tabla para los nombres de columna. La columna en la que estaba incurriendo en error existía tanto en las subconsuciones como en Snowflake no sabía cómo manejar eso.

¿Alguien sabe una manera de evitar esto o sabe si esto ha sido reportado en otro lugar? Creo que Power BI debería poder controlar esta operación de informe.

Gracias

1 ACCEPTED SOLUTION

En este caso, la mejor (y la opción preferida) en mi opition es crear una vista en copo de nieve.

Dentro de la vista cambie el nombre del campo. El PowerBi de conexión a la vista en lugar de la tabla

No cambie el nombre del campo directamente en la tabla. Yo no recomendaría que

View solution in original post

9 REPLIES 9
Syndicate_Admin
Administrator
Administrator

Quería compartir con cualquier otra persona que vea este subproceso que me des hice del mensaje de error cambiando la relación entre dos tablas en la vista de modelo. Una vez que comprobé "Asumir integridad referencial", ya no recibí el error. Al marcar esta casilla se utiliza un INNER JOIN en lugar de un OUTER JOIN.

themistoklis
Community Champion
Community Champion

@jacob-dickey

Lo mejor es enviarnos la consulta que ha utilizado.

Este error"S QL compilation error: ambiguous column" se devuelve en los casos, por ejemplo, cuando se tiene una combinación de 2 tablas y la misma columna aparece en ambas. Cuando se realiza una instrucción select y no se especifica la tabla a la que pertenece esta columna, se produce un error.

Puede especificar la tabla a través del alias o el propio nombre de la tabla

Esta es la parte de la consulta que está causando el problema. Se ejecuta como está, se error. He notado que cuando agredo calificadores a las dos columnas "CREATED" en la cláusula WHERE al final, la consulta funcionará. ¿Hay alguna manera de decirle a Power BI que haga esto?

seleccionar "ITBL"." DIM_EQUIPMENT_KEY" como "C2",
            "ITBL"." FABRICANTE",
            "ITBL"." CEID",
            "ITBL"." MODEL_NAME",
            "ITBL"." MODALIDAD",
            "OTBL"." TOTAL_COST"
        De 
        
(
            seleccionar "OTBL"." DIM_EXPENSE_LINE_KEY",
                "OTBL"." EXPENSE_LINE_NUMBER",
                "OTBL"." EXPENSE_LINE_SYS_ID",
                "OTBL"." ESTADO",
                "OTBL"." CREATED_BY",
                "OTBL"." CREADO",
                "OTBL"." UPDATED_BY",
                "OTBL"." ACTUALIZADO",
                "OTBL"." EXPENSE_LINE_TYPE",
                "OTBL"." BILLBACK",
                "OTBL"." BILLABLE_REASON",
                "OTBL"." EFS_DURING",
                "OTBL"." EFS_AFTER",
                "OTBL"." START_TIME",
                "OTBL"." END_TIME",
                "OTBL"." EXTENDED_PRICE",
                "OTBL"." LABOR_HOURS",
                "OTBL"." QUANTITY_BILLED",
                "OTBL"." QUANTITY_SOLD",
                "OTBL"." TOTAL_COST", 
                "OTBL"." UNIT_PRICE",
                "OTBL"." TECHNICIAN_ID",
                "OTBL"." TECHNICIAN",
                "OTBL"." EXTENDED_COST",
                "OTBL"." TRIMEDX_LABOR_COST",
                "OTBL"." EXPENSE_LINE_COST",
                "OTBL"." LABOR_MINUTES",
                "OTBL"." CANTIDAD",
                "OTBL"." CUSTOMER_INVOICE_NUMBER",
                "OTBL"." CUSTOMER_INVOICE_AMOUNT",
                "OTBL"." SHORT_DESCRIPTION",
                "OTBL"." FUENTE",
                "ITBL"." DIM_EXPENSE_LINE_KEY" como "C1",
                "ITBL"." DIM_WORK_ORDER_KEY",
                "ITBL"." DIM_CUSTOMER_KEY",
                "ITBL"." DIM_EQUIPMENT_KEY",
                "ITBL"." DIM_RECEIPT_LINE_KEY",
                "ITBL"." DIM_RECEIPT_KEY"
            De 
            (
                seleccionar "DIM_EXPENSE_LINE_KEY",
                    "EXPENSE_LINE_NUMBER",
                    "EXPENSE_LINE_SYS_ID",
                    "ESTADO",
                    "CREATED_BY",
                    "CREATED",
                    "UPDATED_BY",
                    "ACTUALIZADO",
                    "EXPENSE_LINE_TYPE",
                    "BILLBACK",
                    "BILLABLE_REASON",
                    "EFS_DURING",
                    "EFS_AFTER",
                    "START_TIME",
                    "END_TIME",
                    "EXTENDED_PRICE",
                    "LABOR_HOURS",
                    "QUANTITY_BILLED",
                    "QUANTITY_SOLD",
                    "TOTAL_COST",
                    "UNIT_PRICE",
                    "TECHNICIAN_ID",
                    "TECHNICIAN",
                    "EXTENDED_COST",
                    "TRIMEDX_LABOR_COST",
                    "EXPENSE_LINE_COST",
                    "LABOR_MINUTES",
                    "AMOUNT",
                    "CUSTOMER_INVOICE_NUMBER",
                    "CUSTOMER_INVOICE_AMOUNT",
                    "SHORT_DESCRIPTION",
                    "SOURCE"
                de "PRD"." INFORMAR"." DIM_EXPENSE_LINE"
                donde "BILLBACK" no es nulo
            ) como "OTBL"
            unión exterior izquierda "PRD"." INFORMAR"." FCT_EXPENSE_LINE" como "ITBL" en ("OTBL"." DIM_EXPENSE_LINE_KEY" - "ITBL"." DIM_EXPENSE_LINE_KEY")
        ) como "OTBL"
        
unión exterior izquierda 
        (
            seleccionar "DIM_EQUIPMENT_KEY",
                "EQUIPMENT_SYS_ID",
                "EQUIPMENT_NUMBER",
                "ASSET_TAG",
                "DEPARTMENT_SYS_ID",
                "DEPARTAMENTO",
                "DEPARTMENT_PRIMARY_CONTACT_ID",
                "DEPARTMENT_PRIMARY_CONTACT",
                "INSTALL_DATE",
                "VALID_INSTALL_DATE",
                "IP_ADDRESS",
                "VALID_IP_ADDRESS",
                "MAC_ADDRESS",
                "VALID_MAC_ADDRESS",
                "MANUFACTURER_ID",
                "MANUFACTURER",
                "LEGACY_MANUFACTURER_ID",
                "MANUFACTURER_CREATED",
                "EQUIPMENT_NAME",
                "SERIAL_NUMBER",
                "CREATED",
                "ACTUALIZADO",
                "ENTERED_DATE",
                "CEID",
                "OLD_CEID",
                "CONNECTED_TO_NETWORK",
                "DEVICE_STATUS",
                "SUB_STATUS",
                "DISPOSITION_DATE",
                "REACTIVATION_DATE",
                "MANUFACTURED_DATE",
                "LAST_PM_DATE",
                "NEXT_PM_DATE",
                "MISSION_CRITICAL",
                "EQUIPMENT_CRITICALITY",
                "PM_MANAGED",
                "RSQ_EQUIPID",
                "EQUIPMENT_COST",
                "WARRANTY_START_DATE",
                "WARRANTY_END_DATE",
                "WARRANTY_TYPE",
                "STRATEGY_SELECTION",
                "CURRENT_STRATEGY",
                "VENDOR_SITE_ID",
                "AE_TITLE",
                "DOES_DEVICE_HAVE_EPHI",
                "ALARMADO",
                "RDM",                "SITE_SPECIFIC_SVC",
                "MODEL_NUMBER",
                "MODEL_SYS_ID",
                "MODEL_NAME",
                "MODEL_ACTIVE",
                "EM_SCORE",
                "MODEL_CLASS",
                "MODEL_ID",
                "CAPABLE_OF_NETWORK_CONNECTION",
                "NO_LONGER_MANUFACTURED_DATE",
                "OEM_PART_SUPPORT_NOT_AVAILABLE_DATE",
                "OEM_PART_SUPPORT_NOT_AVAILABLE",
                "TRIMEDX_END_OF_SUPPORT_LIFE_DATE",
                "MODEL_CLASS_RISK",
                "PRICE_LEVEL",
                "MODEL_SVC",
                "MODEL_OS",
                "DESCRIPTION_SYS_ID",
                "DESCRIPTION_ACTIVE",
                "DESCRIPCION",
                "DESCRIPTION_ID",
                "MODALIDAD",
                "SERVICE_LINE",
                "MAJOR_CATEGORY",
                "MINOR_CATEGORY",
                "CAPITAL_TYPE",
                "COMMERCIAL_PACKAGE",
                "ESSENTIALS_COMMERCIAL_OFFERING_FLAG",
                "ADVANCED_COMMERCIAL_OFFERING_FLAG",
                "PRO_COMMERCIAL_OFFERING_FLAG",
                "OPERATING_SYSTEM",
                "OPERATING_SYSTEM_FAMILY",
                "OPERATING_SYSTEM_VERSION",
                "OPERATING_SYSTEM_EXTENDED_SUPPORT_END_DATE",
                "OPERATING_SYSTEM_MAINSTREAM_SUPPORT_END_DATE",
                "MODEL_TYPE_ID",
                "MODEL_TYPE",
                "PM_SCHEDULE",
                "PM_FREQUENCY_1",
                "PM_FREQUENCY_2",
                "PM_FREQUENCY_3",
                "PM_FREQUENCY_4",
                "PM_PROCEDURE_1",
                "PM_PROCEDURE_2",
                "PM_PROCEDURE_3",
                "PM_PROCEDURE_4",
                "RELATED_SERVICE_OFFERING",
                "CE_FLAG",
                "MME_FLAG",
                "URL",
                "LAST_TOUCH_DATE",
                "REGULATORY_ENVIRONMENT",
                "DEVICE_STORING_TRANSMITTING_DISPLAYING_PHI",
                "PHYSICAL_LOCATION",
                "PRIMARY_TECHNICIAN_ID",
                "PRIMARY_TECHNICIAN",
                "SECONDARY_TECHNICIAN_ID",
                "SECONDARY_TECHNICIAN",
                "PM_TECHNICIAN_ID",
                "PM_TECHNICIAN",
                "INSTALL_STATUS",
                "ASSIGNMENT_GROUP",
                "PM_MONTH",
                "CUSTOMER_DEVICE_EMR_ID",
                "DAYS_IN_SERVICE",
                "LIFETIME_TOTAL_COST",
                "PM_COUNT",
                "DATE_ADDED",
                Caso
                    cuando "MISSION_CRITICAL" - VERDADERO y no "MISSION_CRITICAL" es nulo
                    luego CAST(1 como INTEGER)
                    otro CAST(0 como INTEGER)
                finales como "C1",
                Caso
                    cuando "MISSION_CRITICAL" - VERDADERO y no "MISSION_CRITICAL" es nulo
                    luego CAST(5 como INTEGER)
                    otro CAST(10 como INTEGER)
                finales como "C2",
                á fn concat('A', "EQUIPMENT_SYS_ID") - como "C3"
            de "PRD"." INFORMAR"." DIM_EQUIPMENT"
            donde el valor de "CE_FLAG", SQL_DOUBLE) es nulo el valor de "SQL_DOUBLE" y no "CE_FLAG"
        ) como "ITBL" 
        
en ("OTBL"." DIM_EQUIPMENT_KEY" - "ITBL"." DIM_EQUIPMENT_KEY")
        
donde ((((((("CE_FLAG" - CAST(1 as DECIMAL) y "CREATED" < CAST('2020-10-03 00:00:00.00' as TIMESTAMP)) y "CREATED" >' CAST('2020-06-05 00:00:00.00' as TIMESTAMP)) y no "DEVICE_STATUS <2> "<1> <0>" - "Archived" o "DEVICE_STATUS" es null)) y (no "DEVICE_STATUS" - "Disposición" o "DEVICE_STATUS" es nula)) y no "MODALITY" es nulo) y (no "MODEL_NAME" - "UNMATCHED" o "MODEL_NAME" es nulo)) y no "DESCRIPTION" es nulo)) y no "DESCRIPTION" es nulo) y no "DESCRIPTION" es nulo)) y no "DESCRIPTION" es nulo)) y no "DESCRIPTION" es nulo)) y no "DESCRIPTION" es nulo)) y no "DESCRIPTION" es nulo)) y no "DESCRIPTION" es nulo)) y no "DESCRIPTION" es nulo)) y no "DESCRIPTION" es nulo) y no "DESCRIPTION" es nulo) y no "DESCRIPTION" es nulo) y (no "MODEL_NAME"    

Hola @jacob-dickey

¿Realmente quiere decir si PowerBI puede agregar los alias correctos justo al lado de los nombres de campo?

Esto no lo puede hacer PowerBI.

Para darte un poco de contexto.

La consulta que escribió también pasará por el mismo mensaje de error si la ejecuta en cualquier cliente de base de datos. Es un error generado por la base de datos y no PowerBI uno. En otras palabras, el error dice que no escribió la consulta correctamente y que necesita realizar las modificaciones necesarias.

En su consulta se utilizan 2 tablas ITBL y OTBL. Para todos los campos ha utilizado un alias, pero no en los campos de la instrucción where. Esta es una mala escritura de una consulta SQL.

El campo Creado también es uno de los campos principales de una tabla de base de datos. Si no especifica el alias de tabla correctamente, devolverá datos incorrectos.

La solución en su caso es poner un alias (ITBL u OTBL) delante de cada campo en la instrucción where.

Espero que eso haya ayudado

Correcto, estoy de acuerdo en que es el problema con la consulta. Sin embargo, no escribí esa consulta, Power BI DirectQuery sí.
Encontré esa consulta en mi historial de consultas de Snowflake después de obtener el error en Power BI.

@jacob-dickey 

 

If i remember correctly you can not write a custom query and send it through PowerBI to snowflake.

 

You can only connect directly to tables in Snowflake. Corrct me if im wrong.

 

My understanding is that you have multiple steps in Power Query editor and one of the steps joins 2 tables. Is this right?

If this is the case, i think the best way to overcome this issue is by adding one more step and delete the duplicate columns from the table you are not interested in. I hope tis makes sense??

Correcto, por lo que puedo entender, no puede enviar consultas personalizadas a través de Power BI. Solo puede incorporar tablas y unirlas creando relaciones en el modelo de datos. Así es como me uní a las tablas que aparecen en mi consulta anterior.
Estoy de acuerdo, creo que el problema se resolverá si una de las columnas "CREATED" se quitó del modelo de datos para que solo uno aparezca en el resultado de DirectQuery. Sin embargo, estoy usando ambas columnas "CREATED" en varias partes del informe.
¿Cree que actualmente la única opción sería editar la tabla base en Snowflake para cambiar el nombre de la columna? Si es así, consideraría que este error es un error para Power BI. Creo que debería ser capaz de manejar este tipo de operación de informe.

En este caso, la mejor (y la opción preferida) en mi opition es crear una vista en copo de nieve.

Dentro de la vista cambie el nombre del campo. El PowerBi de conexión a la vista en lugar de la tabla

No cambie el nombre del campo directamente en la tabla. Yo no recomendaría que

Estoy de acuerdo, por desgracia, creo que esta podría ser la única solución viable en este momento. Desearía que hubiera una mejor manera ya que esto causará algunas reelaboraciones, pero esto todavía debería funcionar. ¡Gracias por tu ayuda!

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.