Compartilhar via


Classe de erro UNRESOLVED_COLUMN

SQLSTATE: 42703

Uma coluna, variável ou parâmetro de rotina com nome <objectName> não pode ser resolvido.

Essa 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

Você quis dizer um dos seguintes? [<proposal>]

Parâmetros

  • objectName: o nome da coluna ou parâmetro que não pode ser resolvido.
  • proposal: uma lista separada por vírgulas de possíveis candidatos.

Explicação

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

Há várias causas para esse erro:

  • Um erro de ortografia 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 alias de coluna.
  • A referência de coluna está correlacionada e você não especificou LATERAL.
  • A referência de coluna é para um objeto que não está visível porque ele aparece anteriormente na mesma lista de seleção ou dentro de uma subconsulta escalar.

Atenuação

A mitigação do erro depende da causa:

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

    Compare com as colunas oferecidas emobjectList corrija a ortografia.

  • Você quis especificar um literal de cadeia de caracteres?

    Coloque o literal entre aspas simples, e não tiques traseiros (acento grave).

  • A coluna foi omitida de uma subconsulta?

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

  • Você está fazendo referência a uma coluna em uma relação anterior na mesma cláusula?

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

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

    Consulte Resolução de colunas, campos, parâmetros e variáveis para obter uma descrição detalhada da 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