Partilhar via


UNRESOLVED_COLUMN classe de erro

SQLSTATE: 42703

Uma coluna ou parâmetro de função com nome <objectName> não pode ser resolvido.

Esta classe de erro tem as seguintes classes de erro derivadas.

WITHOUT_SUGGESTION

Parâmetros

  • objectName: O nome da coluna ou parâmetro que não pode ser resolvido.

WITH_SUGGESTION

Referiu-se a um dos seguintes? [<proposal>]

Parâmetros

  • objectName: O nome da coluna ou parâmetro que não pode ser resolvido.
  • proposta: Uma lista separada por vírgulas dos potenciais candidatos.

Explicação

O Azure Databricks gera esse erro sempre que não consegue identificar um identificador em um contexto em que espera um parâmetro de coluna, alias de coluna ou função.

Existem várias causas para este erro:

  • Um erro ortográfico no nome da coluna ou no nome do parâmetro.
  • Na verdade, você pretendia especificar um literal de cadeia de caracteres, e não um identificador.
  • A coluna foi renomeada ou descartada usando ALTER TABLE
  • A coluna não foi incluída na lista de seleção de uma subconsulta.
  • A coluna foi renomeada usando o alias de tabela ou o alias de coluna.
  • A referência da coluna está correlacionada e você não especificou LATERAL.
  • A referência de coluna é a um objeto que não é visível porque aparece anteriormente na mesma lista de seleção ou em uma subconsulta escalar.

Mitigação

A atenuação do erro depende da causa:

  • A grafia do nome e dos qualificadores está incorreta?

    Compare com as colunas oferecidas no objectList e corrija a ortografia.

  • Você quis especificar um literal de cadeia de caracteres em vez disso?

    Coloque o literal entre aspas simples, e não em ticks de volta (acento grave).

  • A coluna foi omitida de uma subconsulta?

    Adicione a coluna à lista de seleção da subconsulta.

  • Você está se referindo a uma coluna em uma relação anterior na mesma cláusula de?

    Adicione a palavra-chave antes da subconsulta com a LATERAL coluna não resolvida. O suporte a consultas correlacionadas é limitado. Talvez seja necessário reescrever (descorrelacionar) a consulta.

  • Não está claro por que a coluna ou campo não pode ser resolvido?

    Consulte Coluna, campo, parâmetro e resolução de variáveis para obter uma descrição detalhada sobre a resolução de nomes.

Exemplos

> 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