다음을 통해 공유


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