Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:
Databricks SQL
Databricks Runtime
Olyan virtuális táblát hoz létre, amely nem rendelkezik fizikai adatokkal egy SQL-lekérdezés eredményhalmaza vagy egy yaml-specifikáción alapuló metrikanézet alapján. ALTER VIEW és DROP VIEW csak a metaadatok módosítása.
Az utasítás végrehajtásához metaadattár-rendszergazdának kell lennie, vagy rendelkeznie kell USE CATALOG és USE SCHEMA jogosultságokkal a katalógusban és a sémában, valamint CREATE TABLE jogosultságokkal a célsémában.
A parancsot végrehajtó felhasználó lesz a nézet tulajdonosa.
Szemantika
CREATE [ OR REPLACE ] [ TEMPORARY ] VIEW [ IF NOT EXISTS ] view_name
[ column_list ]
[ with_clause |
COMMENT view_comment |
DEFAULT COLLATION collation_name |
TBLPROPERTIES clause |
LANGUAGE YAML ] [...]
AS { query | $$ yaml_string $$ }
with_clause
WITH { { schema_binding | METRICS } |
( { schema_binding | METRICS } [, ...] } )
schema_binding
WITH SCHEMA { BINDING | COMPENSATION | [ TYPE ] EVOLUTION }
column_list
( { column_alias [ COMMENT column_comment ] } [, ...] )
Paraméterek
VAGY CSERE
Ha már létezik ilyen nevű nézet, a program lecseréli. Meglévő nézet cseréjéhez Önnek kell a tulajdonosnak lennie.
A meglévő nézet lecserélése nem őrzi meg az eredeti nézeten vagy a
table_idbiztosított jogosultságokat. A jogosultságok megőrzéséhez használja a ALTER VIEW.CREATE OR REPLACE VIEW view_nameegyenértékű aDROP VIEW IF EXISTS view_name, amitCREATE VIEW view_namekövet.IDEIGLENES
TEMPORARYa nézetek csak az őket létrehozó munkamenet számára láthatók, és a munkamenet végén el lesznek vetve.GLOBÁLIS IDEIGLENES
A következőkre vonatkozik:
Databricks RuntimeGLOBAL TEMPORARYa nézetek egy rendszer által megőrzött ideiglenes sémáhozglobal_tempvannak kötve.HA NEM LÉTEZIK
Csak akkor hozza létre a nézetet, ha az még nem létezik. Ha már létezik ilyen nevű nézet, az
CREATE VIEWutasítás figyelmen kívül lesz hagyva.Legfeljebb egyet adhat meg a következők közül:
IF NOT EXISTSvagyOR REPLACE.-
Az újonnan létrehozott nézet neve. Az ideiglenes nézet neve nem minősíthető. A teljes nézetnévnek egyedinek kell lennie.
A létrehozott
hive_metastorenézetnevek csak alfanumerikus ASCII-karaktereket és aláhúzásjeleket (INVALID_SCHEMA_OR_RELATION_NAME) tartalmazhatnak. METRIKÁK
A következőkre vonatkozik:
Databricks SQL
Databricks Runtime 16.4 és újabb verziók
kizárólag a Unity CatalogA nézetet metrikanézetként azonosítja. A nézetet meg kell határozni,
LANGUAGE YAMLés a nézet törzsének érvényes yaml-specifikációnak kell lennie.A Databricks Runtime 17.2-es használata előtt ez a záradék ideiglenes nézetek esetén nem támogatott.
A metrikanézet nem támogatja a
DEFAULT COLLATIONésschema_bindingzáradékokat.A metrikanézet YAML-specifikációja meghatározza
dimensionsésmeasures. Adimensionsnézet azon oszlopai, amelyekkel a meghívó összesítheti a mértékeket, míg ameasuresnézet összesítéseit határozza meg.A metrikanézet meghívója a mértékkifejezést használja a nézetek által definiált mértékek eléréséhez az összesítési függvények megadása helyett.
schema_binding
A következőkre vonatkozik:
Databricks Runtime 15.3 vagy újabbOpcionálisan meghatározza, hogy a nézet hogyan alkalmazkodik a lekérdezés sémájának a mögöttes objektumdefiníciók változásai miatti változásaihoz.
Ez a záradék ideiglenes nézetek, metrikák vagy materializált nézetek esetében nem támogatott.
SCHEMA KÖTÉS
A nézet érvénytelenné válik, ha a lekérdezés oszloplistája megváltozik, kivéve az alábbi feltételeket:
- Az oszloplistában van egy csillag (*) karakter, és további oszlopok is vannak. Ezek a további oszlopok figyelmen kívül lesznek hagyva.
- Egy vagy több oszlop típusa úgy módosult, hogy az implicit öntési szabályok használatával biztonságosan át lehessen őket helyezni az eredeti oszloptípusokra.
SCHEMA KÁRTÉRÍTÉS
A nézet érvénytelenné válik, ha a lekérdezés oszloplistája megváltozik, kivéve az alábbi feltételeket:
- Az oszloplistában van egy csillag (*) karakter, és további oszlopok is vannak. Ezek a további oszlopok figyelmen kívül lesznek hagyva.
- Egy vagy több oszlop típusa úgy módosult, hogy explicit ANSI típuskonverziós szabályokkal az eredeti oszloptípusokra alakíthatók legyenek.
Ez az alapértelmezett viselkedés.
SCHEMA TÍPUSFEJLŐDÉS
A nézet a lekérdezésoszlopok listájában lévő típusokat a saját definíciójába fogja beépíteni, amikor az SQL-fordító észleli az ilyen változást a nézetre való hivatkozásra adott válaszként.
SCHEMA EVOLÚCIÓ
- Ez a mód úgy viselkedik, mint a
SCHEMA TYPE EVOLUTION, és ha a nézet nem tartalmaz explicitcolumn_list, akkor az oszlopnevekben vagy a hozzáadott és elvetett oszlopokban is módosításokat hajt végre. - A nézet csak akkor lesz érvénytelen, ha a lekérdezés már nem elemezhető, vagy az opcionális nézet
column_listmár nem egyezik meg aqueryválasztólistában szereplő kifejezések számával.
- Ez a mód úgy viselkedik, mint a
column_list
Igény szerint címkézheti a nézet lekérdezési eredményében szereplő oszlopokat. Ha oszloplistát ad meg, az oszlop aliasainak számát meg kell egyeznie a lekérdezésben szereplő kifejezések számával, vagy a metrikanézetek esetében a YAML-specifikációval. Ha nincs megadva oszloplista, akkor a rendszer a nézet törzséből származtat aliasokat.
-
Az oszlop aliasainak egyedinek kell lenniük.
column_comment
Egy nem kötelező
STRINGliterál, amely leírja az oszlop aliasát.
-
view_comment
Egy nem kötelező
STRINGliterál, amely nézetszintű megjegyzéseket biztosít.ALAPÉRTELMEZETT RENDEZÉSI COLLATION_NAME
A következőkre vonatkozik:
Databricks SQL
Databricks Runtime 16.3 és újabbMeghatározza a
queryelemen belüli alapértelmezett sorrend összeállítását. Ha nincs megadva, az alapértelmezett rendezés abból a sémából származik, amelyben a nézet létrejön.Ez a záradék nem támogatott a metrikanézetek esetében.
-
Igény szerint beállíthat egy vagy több felhasználó által definiált tulajdonságot.
-
Olyan lekérdezés, amely alaptáblákból vagy más nézetekből hozza létre a nézetet.
Ez a záradék nem támogatott a metrikanézetek esetében.
AS $$ yaml_string $$
Egy YAML specifikáció, amely meghatároz egy metrikanézetet.
Példák
-- 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
---- ------
-- Create a view using a default collation of UTF8_BINARY
> CREATE VIEW v DEFAULT COLLATION UTF8_BINARY
AS SELECT 5::STRING AS text;
-- Creates a Metric View as specified in the YAML definition, with three dimensions and four measures representing the count of orders.
> CREATE OR REPLACE VIEW region_sales_metrics
(month COMMENT 'Month order was made',
status,
order_priority,
count_orders COMMENT 'Count of orders',
total_Revenue,
total_revenue_per_customer,
total_revenue_for_open_orders)
WITH METRICS
LANGUAGE YAML
COMMENT 'A Metric View for regional sales metrics.'
AS $$
version: 0.1
source: samples.tpch.orders
filter: o_orderdate > '1990-01-01'
dimensions:
- name: month
expr: date_trunc('MONTH', o_orderdate)
- name: status
expr: case
when o_orderstatus = 'O' then 'Open'
when o_orderstatus = 'P' then 'Processing'
when o_orderstatus = 'F' then 'Fulfilled'
end
- name: prder_priority
expr: split(o_orderpriority, '-')[1]
measures:
- name: count_orders
expr: count(1)
- name: total_revenue
expr: SUM(o_totalprice)
- name: total_revenue_per_customer
expr: SUM(o_totalprice) / count(distinct o_custkey)
- name: total_revenue_for_open_orders
expr: SUM(o_totalprice) filter (where o_orderstatus='O')
$$;
> DESCRIBE EXTENDED region_sales_metrics;
col_name data_type
------------------------------ --------------------------
month timestamp
status string
order_priority string
count_orders bigint measure
total_revenue decimal(28,2) measure
total_revenue_per_customer decimal(38,12) measure
total_revenue_for_open_orders decimal(28,2) measure
# Detailed Table Information
Catalog main
Database default
Table region_sales_metrics
Owner alf@melmak.et
Created Time Thu May 15 13:03:01 UTC 2025
Last Access UNKNOWN
Created By Spark
Type METRIC_VIEW
Comment A Metric View for regional sales metrics.
Use Remote Filtering false
View Text "
version: 0.1
source: samples.tpch.orders
filter: o_orderdate > '1990-01-01'
dimensions:
- name: month
expr: date_trunc('MONTH', o_orderdate)
- name: status
expr: case
when o_orderstatus = 'O' then 'Open'
when o_orderstatus = 'P' then 'Processing'
when o_orderstatus = 'F' then 'Fulfilled'
end
- name: Order_Priority
expr: split(o_orderpriority, '-')[1]
measures:
- name: count_orders
expr: count(1)
- name: total_Revenue
expr: SUM(o_totalprice)
- name: total_Revenue_per_Customer
expr: SUM(o_totalprice) / count(distinct o_custkey)
- name: Total_Revenue_for_Open_Orders
expr: SUM(o_totalprice) filter (where o_orderstatus='O')
"
Language YAML
Table Properties [metric_view.from.name=samples.tpch.orders, metric_view.from.type=ASSET, metric_view.where=o_orderdate > '1990-01-01']
-- Tracking total_revenue_per_customer by month in 1995
> SELECT extract(month from month) as month,
measure(total_revenue_per_customer)::bigint AS total_revenue_per_customer
FROM region_sales_metrics
WHERE extract(year FROM month) = 1995
GROUP BY ALL
ORDER BY ALL;
month total_revenue_per_customer
----- --------------------------
1 167727
2 166237
3 167349
4 167604
5 166483
6 167402
7 167272
8 167435
9 166633
10 167441
11 167286
12 167542
-- Tracking total_revenue_per_customer by month and status in 1995
> SELECT extract(month from month) as month,
status,
measure(total_revenue_per_customer)::bigint AS total_revenue_per_customer
FROM region_sales_metrics
WHERE extract(year FROM month) = 1995
GROUP BY ALL
ORDER BY ALL;
month status total_revenue_per_customer
----- --------- --------------------------
1 Fulfilled 167727
2 Fulfilled 161720
2 Open 40203
2 Processing 193412
3 Fulfilled 121816
3 Open 52424
3 Processing 196304
4 Fulfilled 80405
4 Open 75630
4 Processing 196136
5 Fulfilled 53460
5 Open 115344
5 Processing 196147
6 Fulfilled 42479
6 Open 160390
6 Processing 193461
7 Open 167272
8 Open 167435
9 Open 166633
10 Open 167441
11 Open 167286
12 Open 167542