Поделиться через


Класс ошибок UNRESOLVED_COLUMN

SQLSTATE: 42703

Невозможно разрешить параметр столбца, переменной или подпрограммы с именем <objectName> .

Этот класс ошибок содержит следующие производные классы ошибок.

WITHOUT_SUGGESTION

Параметры

  • objectName: имя столбца или параметра, которое не удается разрешить.

WITH_SUGGESTION

Вы подразумевали один из следующих вариантов? [<proposal>]

Параметры

  • objectName: имя столбца или параметра, которое не удается разрешить.
  • предложение: разделенный запятыми список потенциальных кандидатов.

Описание

Azure Databricks вызывает эту ошибку всякий раз, когда не удается определить идентификатор в контексте, где ожидается столбец, псевдоним столбца или параметр функции.

Эта ошибка возникает по нескольким причинам.

  • Ошибка в написании имени столбца или имени параметра.
  • На самом деле необходимо указать строковый литерал, а не идентификатор.
  • Столбец был переименован или удален с помощью инструкции ALTER TABLE
  • Столбец не был включен в список выбора вложенного запроса.
  • Столбец был переименован с помощью псевдонима таблицы или псевдонима столбца.
  • Ссылка на столбец коррелируется, и вы не указали LATERAL.
  • Ссылка на столбец — это объект, который не виден, так как он отображается ранее в том же списке выбора или в скалярном вложенном запросе.

Исправление

Способ устранения данной ошибки зависит от причины.

  • Неправильное написание имени и квалификаторов?

    Сравните со столбцами, предлагаемыми в objectList и исправьте написание.

  • Вы хотели указать строковый литерал?

    Заключите литерал в одинарные кавычки, а не обратные кавычки (знак над символом).

  • Был ли столбец опущен во вложенном запросе?

    Добавьте столбец в список выбора вложенного запроса.

  • Ссылаетесь ли вы на столбец в более ранней связи в том же предложении from?

    Добавьте ключевое LATERAL слово перед вложенным запросом с неразрешенным столбцом. Поддержка коррелированных запросов ограничена. Возможно, потребуется переписать запрос (де-коррелировать).

  • Неясно, почему невозможно разрешить столбец или поле?

    Дополнительные сведения о разрешении имен см. в столбце, поле, параметре и разрешении переменных.

Примеры

> 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