Sdílet prostřednictvím


UNRESOLVED_COLUMN třída chyb

SQLSTATE: 42703

Sloupec nebo parametr funkce s názvem <objectName> nelze přeložit.

Tato třída chyby má následující odvozené třídy chyb.

WITHOUT_SUGGESTION

Parametry

  • objectName: Název sloupce nebo parametru, který nelze přeložit.

WITH_SUGGESTION

Mysleli jste jednu z následujících věcí? [<proposal>]

Parametry

  • objectName: Název sloupce nebo parametru, který nelze přeložit.
  • návrh: Čárkami oddělený seznam potenciálních kandidátů.

Vysvětlení

Azure Databricks tuto chybu vyvolá vždy, když nemůže identifikovat identifikátor v kontextu, kde očekává sloupec, alias sloupce nebo parametr funkce.

Tato chyba má několik příčin:

  • Pravopisná chyba v názvu sloupce nebo názvu parametru
  • Ve skutečnosti jste chtěli zadat řetězcový literál, nikoli identifikátor.
  • Sloupec byl přejmenován nebo vyřazen pomocí funkce ALTER TABLE.
  • Sloupec nebyl zahrnut do seznamu výběrových poddotazů.
  • Sloupec byl přejmenován pomocí aliasu tabulky nebo aliasu sloupce.
  • Odkaz na sloupec koreluje a nezadali jste funkci LATERAL.
  • Odkaz na sloupec je objekt, který není viditelný, protože se zobrazí dříve ve stejném seznamu výběru nebo v rámci skalárního poddotazu.

Zmírnění

Zmírnění chyby závisí na příčině:

  • Je pravopis názvu a kvalifikátorů nesprávný?

    Porovnejte se sloupci nabízenými v sadě objectList a opravte pravopis.

  • Chtěli jste místo toho zadat řetězcový literál?

    Uzavřete literál do jednoduchých uvozovek, nikoli do zadních záškrtů (zvýraznění hrobu).

  • Vynechal se sloupec z poddotazu?

    Přidejte sloupec do seznamu výběrových poddotazů.

  • Odkazujete na sloupec v dřívější relaci ve stejné klauzuli z klauzule?

    LATERAL Přidejte klíčové slovo před poddotaz s nevyřešeným sloupcem. Podpora korelovaných dotazů je omezená. Možná budete muset dotaz přepsat (zrušit korelaci).

  • Není jasné, proč se sloupec nebo pole nedá vyřešit?

    Podrobný popis překladu názvů najdete v tématu Sloupec, pole, parametr a rozlišení proměnných.

Příklady

> 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