UNRESOLVED_COLUMN, error (clase)
No se puede resolver una columna, una variable o un parámetro rutinario con nombre <objectName>
.
Esta clase de error tiene las siguientes clases de error derivadas.
WITHOUT_SUGGESTION
Parámetros
- objectName: nombre de la columna o parámetro que no se puede resolver.
WITH_SUGGESTION
¿Quería decir una de las siguientes? [<proposal>
]
Parámetros
- objectName: nombre de la columna o parámetro que no se puede resolver.
- proposal: lista separada por comas de posibles candidatos.
Explicación
Azure Databricks genera este error siempre que no pueda identificar un identificador en un contexto en el que espera un parámetro de columna, alias de columna o función.
Hay varias causas para este error:
- Error ortográfico en el nombre de la columna o el nombre del parámetro.
- Realmente se ha diseñado para especificar un literal de cadena y no un identificador.
- Se ha cambiado el nombre de la columna o se ha quitado mediante ALTER TABLE
- La columna no se ha incluido en la lista de selección de una subconsulta.
- Se ha cambiado el nombre de la columna mediante el alias de tabla o el alias de columna.
- La referencia de columna está correlacionada y no especificó LATERAL.
- La referencia de columna es a un objeto que no está visible porque aparece anteriormente en la misma lista de selección o dentro de una subconsulta escalar.
Mitigación
La mitigación del error depende de la causa:
¿La ortografía del nombre y los calificadores es incorrecto?
Compare con las columnas que se ofrecen en
objectList
y corrija la ortografía.¿Quería especificar un literal de cadena en su lugar?
Encierre el literal entre comillas simples y no contra tics (grave de énfasis).
¿Se ha omitido la columna de una subconsulta?
Agregue la columna a la lista de selección de la subconsulta.
¿Hace referencia a una columna en una relación anterior en la misma cláusula from?
Agregue la palabra clave antes de la subconsulta
LATERAL
con la columna sin resolver. La compatibilidad con consultas correlacionadas es limitada. Es posible que tenga que volver a escribir (des correlacionar) la consulta.¿No está claro por qué no se puede resolver la columna o el campo?
Consulte Resolución de columnas, campos, variables y parámetros para obtener una descripción detallada sobre la resolución de nombres.
Ejemplos
> CREATE OR REPLACE TEMPORARY VIEW colors(cyan, magenta, yellow) AS VALUES(10, 20, 5);
-- The column reference has been misspelled
> SELECT jello FROM colors;
[UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `jello` cannot be resolved.
Did you mean one of the following? [`colors`.`cyan`, `colors`.`yellow`, `colors`.`magenta`]
-- Correct the spelling
> SELECT yellow FROM colors;
5
-- The qualifier has been misspelled
> SELECT color.yellow FROM colors;
[UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `color`.`yellow` cannot be resolved.
Did you mean one of the following? [`colors`.`cyan`, `colors`.`yellow`, `colors`.`magenta`]
-- Correct the spelling
> SELECT colors.yellow FROM colors;
5
-- Forgot to quote a literal
> SELECT hello;
[UNRESOLVED_COLUMN.WITHOUT_SUGGESTION] A column or function parameter with name `hello` cannot be resolved.
-- Use single quotes
> SELECT 'hello';
-- Used the wrong quotes for a literal
> SELECT `hello`;
[UNRESOLVED_COLUMN.WITHOUT_SUGGESTION] A column or function parameter with name `hello` cannot be resolved.
-- Use single quotes instead
> SELECT 'hello';
-- Column "got lost" in a subquery.
> SELECT cyan, magenta, yellow
FROM (SELECT cyan, magenta
FROM colors) AS c;
[UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `yellow` cannot be resolved.
Did you mean one of the following? [`c`.`cyan`, `c`.`magenta`]
-- Add the missing column
> SELECT cyan, magenta, yellow
FROM (SELECT cyan, magenta, yellow
FROM colors) AS c;
10 20 5
-- Columns got renamed in the table alias
> SELECT cyan, magenta, yellow
FROM (SELECT cyan, magenta, yellow
FROM colors) AS c(c, m, y);
[UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `cyan` cannot be resolved.
Did you mean one of the following? [`c`.`c`, `c`.`m`, `c`.`y`];
-- Adjust the names
> SELECT c, m, y
FROM (SELECT cyan, magenta, yellow
FROM colors) AS c(c, m, y);
10 20 5
-- A correlated reference
> SELECT * FROM colors, (SELECT cyan + magenta + yellow AS total_use);
[UNRESOLVED_COLUMN.WITHOUT_SUGGESTION] A column or function parameter with name `cyan` cannot be resolved.
-- Add LATERAL to permit correation
> SELECT * FROM colors, LATERAL(SELECT cyan + magenta + yellow AS total_use);
10 20 5 35
-- Or de-correlate
> SELECT *, cyan + magenta + yellow AS total_use FROM colors;
10 20 5 35
-- A misspelled parameter name
> CREATE OR REPLACE FUNCTION plus(a INT, b INT) RETURNS INT RETURN arg1 + arg2;
[UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `arg1` cannot be resolved.
Did you mean one of the following? [`plus`.`a`, `plus`.`b`]
-- Fix the names
> CREATE OR REPLACE FUNCTION plus(a INT, b INT) RETURNS INT RETURN a + b;
> SELECT plus(1, 2);
3