Delen via


VIEW MAKEN

Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

Hiermee wordt een virtuele tabel gemaakt die geen fysieke gegevens bevat op basis van de resultatenset van een SQL-query. ALTER VIEW en DROP VIEW alleen metagegevens wijzigen.

Syntaxis

CREATE [ OR REPLACE ] [ TEMPORARY ] VIEW [ IF NOT EXISTS ] view_name
    [ column_list ]
    [ schema_binding ]
    [ COMMENT view_comment ]
    [ TBLPROPERTIES clause ]
    AS query

schema_binding
   WITH SCHEMA { BINDING | COMPENSATION | [ TYPE ] EVOLUTION }

column_list
   ( { column_alias [ COMMENT column_comment ] } [, ...] )

Parameters

  • OF VERVANGEN

    Als er al een weergave van dezelfde naam bestaat, wordt deze vervangen. Als u een bestaande weergave wilt vervangen, moet u de eigenaar zijn.

    Het vervangen van een bestaande weergave behoudt geen bevoegdheden die zijn verleend voor de oorspronkelijke weergave. Gebruik ALTER VIEW om bevoegdheden te behouden.

  • TIJDELIJK

    TIJDELIJKE weergaven zijn alleen zichtbaar voor de sessie die ze heeft gemaakt en worden verwijderd wanneer de sessie wordt beëindigd.

  • GLOBAAL TIJDELIJK

    Van toepassing op: vinkje als ja aan Databricks Runtime

    GLOBALE TIJDELIJKE weergaven zijn gekoppeld aan een systeem behouden tijdelijk schema global_temp.

  • ALS DEZE NIET BESTAAT

    Hiermee maakt u de weergave alleen als deze niet bestaat. Als er al een weergave met deze naam bestaat, wordt de CREATE VIEW instructie genegeerd.

    U kunt maximaal één van IF NOT EXISTS of OR REPLACE.

  • view_name

    De naam van de zojuist gemaakte weergave. De naam van een tijdelijke weergave mag niet worden gekwalificeerd. De volledig gekwalificeerde weergavenaam moet uniek zijn.

    Weergaven die zijn gemaakt in hive_metastore kunnen alleen alfanumerieke ASCII-tekens en onderstrepingstekens (INVALID_SCHEMA_OR_RELATION_NAME) bevatten.

  • schema_binding

    Van toepassing op: vinkje als ja aan Databricks Runtime 15.3 en hoger

    Optioneel geeft u op hoe de weergave wordt aangepast aan wijzigingen in het schema van de query vanwege wijzigingen in de onderliggende objectdefinities.

    Deze component wordt niet ondersteund voor tijdelijke weergaven of gerealiseerde weergaven.

    • MET SCHEMABINDING

      De weergave wordt ongeldig als de querykolomlijst wordt gewijzigd, met uitzondering van de volgende voorwaarden:

      • De kolomlijst bevat een stercomponent en er zijn extra kolommen. Deze extra kolommen worden genegeerd.
      • Het type van een of meer kolommen is zodanig gewijzigd dat ze veilig kunnen worden omgezet in de oorspronkelijke kolomtypen met behulp van impliciete cast-regels.

      Dit is het standaardgedrag.

    • MET SCHEMACOMPENSATIE

      De weergave wordt ongeldig als de lijst met querykolommen wordt gewijzigd, met uitzondering van de volgende voorwaarden:

      • De kolomlijst bevat een stercomponent en er zijn extra kolommen. Deze extra kolommen worden genegeerd.
      • Het type van een of meer kolommen is gewijzigd op een manier waarmee ze kunnen worden omgezet naar de oorspronkelijke kolomtypen met behulp van expliciete ANSI-castregels.
    • MET EVOLUTIE VAN SCHEMATYPE

      In de weergave worden wijzigingen in typen in de lijst met querykolommen opgenomen in een eigen definitie wanneer de SQL-compiler een dergelijke wijziging detecteert in reactie op een verwijzing naar de weergave.

    • MET SCHEMAONTWIKKELING

      • Deze modus gedraagt zich als WITH SCHEMA TYPE EVOLUTION, en neemt ook wijzigingen in kolomnamen aan of toegevoegde en verwijderde kolommen als de weergave geen expliciete column_listweergave bevat.
      • De weergave wordt alleen ongeldig als de query niet meer kan worden geparseerd, of de optionele weergave column_list komt niet meer overeen met het aantal expressies in de query selectielijst.
  • column_list

    U kunt desgewenst de kolommen in het queryresultaat van de weergave labelen. Als u een kolomlijst opgeeft, moet het aantal kolomaliassen overeenkomen met het aantal expressies in de query. Als er geen kolomlijst is opgegeven, worden aliassen afgeleid van de hoofdtekst van de weergave.

    • column_alias

      De kolomaliassen moeten uniek zijn.

    • column_comment

      Een optionele letterlijke STRING beschrijving van de kolomalias.

  • view_comment

    Een optionele letterlijke STRING tekst die opmerkingen op weergaveniveau biedt.

  • TBLPROPERTIES

    U kunt desgewenst een of meer door de gebruiker gedefinieerde eigenschappen instellen.

  • AS-query

    Een query waarmee de weergave wordt samengesteld op basistabellen of andere weergaven.

Voorbeelden

-- Create or replace view for `experienced_employee` with comments.
> CREATE OR REPLACE VIEW experienced_employee
    (id COMMENT 'Unique identification number', Name)
    COMMENT 'View for experienced employees'
    AS SELECT id, name
         FROM all_employee
        WHERE working_years > 5;

-- Create a temporary view `subscribed_movies`.
> CREATE TEMPORARY VIEW subscribed_movies
    AS SELECT mo.member_id, mb.full_name, mo.movie_title
         FROM movies AS mo
         INNER JOIN members AS mb
            ON mo.member_id = mb.id;

-- Create a view with schema binding (default)
> CREATE TABLE emp(name STRING, income INT);
> CREATE VIEW emp_v WITH SCHEMA BINDING AS SELECT * FROM emp;

– The view ignores adding a column to the base table
> ALTER TABLE emp ADD COLUMN bonus SMALLINT;
> SELECT * FROM emp_v;
name  income
----  ------

-- The view tolerates narrowing the underlying type
> CREATE OR REPLACE TABLE emp(name STRING, income SMALLINT, bonus SMALLINT);
> SELECT typeof(income) FROM emp_v;
 INTEGER

– The view does not tolerate widening the underlying type
CREATE OR REPLACE TABLE emp(name STRING, income BIGINT, bonus SMALLINT);
> SELECT typeof(income) FROM emp_v;
 Error

– Create a view with SCHEMA COMPENSATION
> CREATE TABLE emp(name STRING, income SMALLINT, bonus SMALLINT);
> CREATE VIEW emp_v WITH SCHEMA COMPENSATION AS SELECT * FROM emp;

-- The view tolerates widening the underlying type but keeps its own signature fixed
CREATE OR REPLACE TABLE emp(name STRING, income INTEGER, bonus INTEGER);
> SELECT typeof(income) FROM emp_v;
 INTEGER

-- The view does not tolerate dropping a needed column
ALTER TABLE emp DROP COLUMN bonus;
> SELECT * FROM emp_v;
Error

– Create a view with SCHEMA EVOLUTION
> CREATE TABLE emp(name STRING, income SMALLINT);
> CREATE VIEW emp_v WITH SCHEMA EVOLUTION AS SELECT * FROM emp;

-- The view picks up additional columns
> ALTER TABLE emp ADD COLUMN bonus SMALLINT
> SELECT * FROM emp_v;
 name income bonus
 ---- ------ -----

-- The view picks up renamed columns as well
> ALTER TABLE emp RENAME COLUMN income TO salary SMALLINT;
> SELECT * FROM emp_v;
 name salary bonus
 ---- ------ -----

-- The view picks up changes to column types and dropped columns
> CREATE OR REPLACE TABLE emp(name STRING, salary BIGINT);
> SELECT *, typeof(salary)AS salary_type FROM emp_v;
 name salary
 ---- ------