Condividi tramite


classe di errore UNRESOLVED_COLUMN

SQLSTATE: 42703

Non è possibile risolvere un parametro di colonna o funzione con nome <objectName> .

Questa classe di errore presenta le classi di errore derivate seguenti.

WITHOUT_SUGGESTION

Parametri

  • objectName: nome della colonna o del parametro che non può essere risolto.

WITH_SUGGESTION

Intendevi una delle seguenti? [<proposal>]

Parametri

  • objectName: nome della colonna o del parametro che non può essere risolto.
  • proposta: elenco delimitato da virgole di potenziali candidati.

Spiegazione

Azure Databricks genera questo errore ogni volta che non riesce a identificare un identificatore in un contesto in cui prevede un parametro di colonna, alias di colonna o funzione.

Esistono diverse cause per questo errore:

  • Errore di ortografia nel nome della colonna o nel nome del parametro.
  • Si intendeva specificare un valore letterale stringa e non un identificatore.
  • La colonna è stata rinominata o eliminata tramite ALTER TABLE
  • La colonna non è stata inclusa nell'elenco di selezione di una sottoquery.
  • La colonna è stata rinominata usando l'alias di tabella o di colonna.
  • Il riferimento alla colonna è correlato e non è stato specificato LATERAL.
  • Il riferimento alla colonna è un oggetto che non è visibile perché viene visualizzato in precedenza nello stesso elenco di selezione o all'interno di una sottoquery scalare.

Strategia di riduzione del rischio

La mitigazione dell'errore dipende dalla causa:

  • L'ortografia del nome e dei qualificatori non è corretta?

    Confrontare le colonne offerte in objectList e correggere l'ortografia.

  • Si intendeva invece specificare un valore letterale stringa?

    Racchiudere il valore letterale tra virgolette singole e non i segni di spunta rovesciata (grave accentato).

  • La colonna è stata omessa da una sottoquery?

    Aggiungere la colonna all'elenco di selezione della sottoquery.

  • Si fa riferimento a una colonna in una relazione precedente nella stessa clausola from?

    Aggiungere la LATERAL parola chiave prima della sottoquery con la colonna non risolta. Il supporto delle query correlate è limitato. Potrebbe essere necessario riscrivere (de-correlare) la query.

  • Non è chiaro perché non è possibile risolvere la colonna o il campo?

    Per una descrizione dettagliata sulla risoluzione dei nomi, vedere Colonna, campo, parametro e risoluzione delle variabili.

Esempi

> 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