ALTER VIEW

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Modifica los metadatos asociados a una vista. Puede cambiar la definición de una vista, cambiar el nombre de una vista y establecer o anular los metadatos estableciendo TBLPROPERTIES. Para una vista métrica, también puede añadir y eliminar relaciones (Beta).

Para agregar o modificar un comentario en una vista, use COMMENT ON.

Si la vista se almacena en caché, el comando borra los datos almacenados en caché de la vista y todos los elementos dependientes que hacen referencia a ella. La memoria caché de la vista se rellena de forma diferida cuando se accede a la vista a continuación. El comando deja los dependientes de la vista como sin almacenar en caché.

Privilegios necesarios

Si usa el catálogo de Unity, las siguientes operaciones no requieren la propiedad de la vista:

  • SET TAGS: requiere el APPLY TAG privilegio.
  • UNSET TAGS: requiere el APPLY TAG privilegio.

Las siguientes operaciones requieren la propiedad de la vista:

  • SET TBLPROPERTIES
  • UNSET TBLPROPERTIES
  • AS query (cambiar la definición de la vista)
  • WITH SCHEMA (cambiar enlace de esquema)

RENAME TO requiere el MANAGE privilegio en la vista.

ADD CONSTRAINT y DROP CONSTRAINT requieren el MANAGE privilegio sobre la vista métrica o propiedad de la misma, además USE CATALOG de su USE SCHEMA catálogo y esquema. ADD CONSTRAINT para una relación también se requiere el SELECT privilegio en la vista métrica de destino, además USE CATALOG de y USE SCHEMA en el catálogo y esquema del destino.

Para SET OWNER TO, los privilegios necesarios dependen del nuevo propietario:

  • Si la entidad de seguridad es usted mismo, debe tener el MANAGE privilegio en la vista.
  • Si la entidad de seguridad es un grupo, debe ser miembro de ese grupo.
  • En todos los demás casos, debe ser un administrador de metastore.

Sintaxis

ALTER VIEW view_name
  { rename |
    SET TBLPROPERTIES clause |
    UNSET TBLPROPERTIES clause |
    alter_body |
    schema_binding |
    owner_to |
    SET TAGS clause |
    UNSET TAGS clause |
    add_constraint |
    drop_constraint }

rename
  RENAME TO to_view_name

alter_body
  AS { query | yaml_definition }

yaml_definition
  $$
    yaml_string
  $$

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

property_key
  { identifier [. ...] | string_literal }

owner_to
  [ SET ] OWNER TO principal

add_constraint
  ADD [ CONSTRAINT name ] relationship_constraint

relationship_constraint
  cardinality RELATIONSHIP TO target_view [ [ AS ] target_alias ]
    { ON condition | USING ( column [, ...] ) }

cardinality
  { MANY | ONE } TO { MANY | ONE }

drop_constraint
  DROP CONSTRAINT [ IF EXISTS ] name

Parámetros

  • view_name

    Identifica la vista que se va a alterar. Si no se encuentra la vista, Azure Databricks genera un error de TABLE_OR_VIEW_NOT_FOUND .

  • CAMBIAR NOMBRE A to_view_name

    Cambia el nombre de la vista existente a to_view_name.

    Para las vistas de catálogo de Unity, debe to_view_name estar dentro del mismo catálogo que view_name. Para otras vistas, to_view_name debe estar dentro del mismo esquema que view_name.

    Si to_view_name no está calificado, se califica implícitamente con el esquema actual.

    No se puede cambiar el nombre de las vistas materializadas.

  • SET TBLPROPERTIES

    Este parámetro le permite establecer o restablecer una o más propiedades que defina el usuario.

  • DESACTIVAR TBLPROPERTIES

    Este parámetro quita una o más propiedades que defina el usuario.

  • Consulta AS

    Consulta que construye la vista a partir de tablas base u otras vistas.

    AS query no es compatible con las vistas de métricas.

    Esta cláusula es equivalente a una instrucción CREATE OR REPLACE VIEW sobre una vista existente, excepto que se conservan los privilegios concedidos sobre la vista.

  • COMO yaml_definition

    Se aplica a:marcado con sí Databricks SQL marcado con sí Databricks Runtime 16.4 y versiones posteriores marcado con sí solo Unity Catalog

    Una definición yaml para una vista de métrica.

    Esta cláusula es equivalente a una instrucción CREATE OR REPLACE VIEW sobre una vista existente, excepto que se conservan los privilegios concedidos sobre la vista.

    Volver a especificar la definición de YAML agrega, quita o cambia la vista de métrica sin parameters ningún cambio de sintaxis. Para obtener la sintaxis de parámetros, consulte CREATE VIEW. Los parámetros requieren Databricks Runtime 18.2 y versiones posteriores.

  • schema_binding

    Se aplica a:marcado como sí Databricks SQL marcado como sí Databricks Runtime 15.3 y versiones posteriores

    Especifica cómo se adapta la consulta posterior de la vista a los cambios en el esquema de la vista debido a los cambios en las definiciones de objeto subyacentes. Consulte CREATE VIEW… WITH SCHEMA para obtener más información sobre los modos de vinculación de esquema.

    Esta cláusula no está admitida para las vistas de métricas.

  • [ SET ] OWNER TO entidad de seguridad

    Transfiere la propiedad de la vista a principal. A menos que la vista se defina en hive_metastore, solo puede transferir la propiedad a un grupo al que pertenece.

    Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 11.3 LTS y versiones posteriores

    SET se permite como una palabra clave opcional.

  • SET TAGS ( { tag_name = tag_value } [, ...] )

    Aplica etiquetas a la vista. Necesita el APPLY TAG privilegio para agregar etiquetas a la vista.

    Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como sí Databricks Runtime 13.3 LTS y versiones posteriores

  • ETIQUETAS UNSET ( tag_name [, ...] )

    Quita las etiquetas de la vista. Necesita el APPLY TAG privilegio para quitar etiquetas de la vista.

    Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como sí Databricks Runtime 13.3 LTS y versiones posteriores

  • tag_name

    Un literal de STRING. El tag_name debe ser único dentro del vista.

  • tag_value

    Un literal de STRING.

  • add_constraint

    Aplica a:con marca de verificación sí Databricks SQL marcado sí Databricks Runtime 19 y superiores con marca marcada sí Solo Unity Catálogo

    Añade una relación informativa desde la vista métrica a la vista métrica objetivo. Esta cláusula está en Beta. Ambos view_name y target_view deben ser vistas métricas del Catálogo de Unity. No se soportan vistas métricas temporales. Azure Databricks no aplica relaciones. Véase Relaciones entre vistas métricas.

    • CONSTRAINT Nombre

      Opcionalmente, nombra la relación. El nombre debe ser único entre todas las restricciones del esquema. Si lo omites, Azure Databricks nombra la relación <source>_to_<target>, usando los nombres no calificados de las dos vistas métricas.

    • cardinalidad

      Uno de MANY TO ONE, ONE TO MANY, ONE TO ONEo MANY TO MANY. Azure Databricks no comprueba los datos con la cardinalidad.

    • PARA target_view

      Identifica la vista de la métrica objetivo. El objetivo puede estar en cualquier catálogo o esquema de la misma metastore.

    • COMO target_alias

      Opcionalmente, nombra el objetivo en condition. Una relación de una vista métrica a sí misma requiere un alias que difiera del nombre de view_name.

    • Condición ON

      Una expresión determinista BOOLEAN sobre las columnas de view_name y target_view, con las mismas reglas que la ON cláusula de una unión. La expresión no puede referirse a una medida. No puede llamar a una función agregada, incluyendo MEASURE y AGG, una función ventana o un generador. Puede llegar a 1.024 caracteres.

    • USING ( columna [, ...] )

      De una a 20 columnas que existen con el mismo nombre en ambas vistas métricas.

  • drop_constraint

    Aplica a:con marca de verificación sí Databricks SQL marcado sí Databricks Runtime 19 y superiores con marca marcada sí Solo Unity Catálogo

    Elimina la relación name desde la vista métrica. Esta cláusula está en Beta. Si especificas IF EXISTS, la afirmación tiene éxito cuando no existe relación con ese nombre. De lo contrario, se produce un error con NO_SUCH_CONSTRAINT_EXCEPTION.

    Warning

    No especifiques RESTRICT ni CASCADE cuándo dejes una relación. A diferencia de ALTER TABLE DROP CONSTRAINT, estas palabras clave no tienen un comportamiento definido para las relaciones, y su comportamiento podría cambiar en una futura versión.

Ejemplos

-- Rename only changes the view name.
-- The source and target schemas of the view must be the same.
-- Use qualified or unqualified name for the source and target view.
> ALTER VIEW tempsc1.v1 RENAME TO tempsc1.v2;

-- Verify that the new view is created.
> DESCRIBE TABLE EXTENDED tempsc1.v2;
                            c1       int   NULL
                            c2    string   NULL

  # Detailed Table Information
                      Database   tempsc1
                         Table        v2

-- Before ALTER VIEW SET TBLPROPERTIES
> DESCRIBE TABLE EXTENDED tempsc1.v2;
                            c1       int   null
                            c2    string   null

  # Detailed Table Information
                      Database   tempsc1
                         Table        v2
              Table Properties    [....]

-- Set properties in TBLPROPERTIES
> ALTER VIEW tempsc1.v2 SET TBLPROPERTIES ('created.by.user' = "John", 'created.date' = '01-01-2001' );

-- Use `DESCRIBE TABLE EXTENDED tempsc1.v2` to verify
> DESCRIBE TABLE EXTENDED tempsc1.v2;
                            c1                                                   int   NULL
                            c2                                                string   NULL

  # Detailed Table Information
                      Database                                               tempsc1
                         Table                                                    v2
              Table Properties [created.by.user=John, created.date=01-01-2001, ....]

-- Remove the key created.by.user and created.date from `TBLPROPERTIES`
> ALTER VIEW tempsc1.v2 UNSET TBLPROPERTIES (`created`.`by`.`user`, created.date);

-- Use `DESCRIBE TABLE EXTENDED tempsc1.v2` to verify the changes
> DESCRIBE TABLE EXTENDED tempsc1.v2;
                            c1       int   NULL
                            c2    string   NULL

  # Detailed Table Information
                      Database   tempsc1
                         Table        v2
              Table Properties    [....]

-- Change the view definition
> ALTER VIEW tempsc1.v2 AS SELECT * FROM tempsc1.v1;

-- Use `DESCRIBE TABLE EXTENDED` to verify
> DESCRIBE TABLE EXTENDED tempsc1.v2;
                            c1                        int   NULL
                            c2                     string   NULL

  # Detailed Table Information
                      Database                    tempsc1
                         Table                         v2
                          Type                       VIEW
                     View Text   select * from tempsc1.v1
            View Original Text   select * from tempsc1.v1

-- Transfer ownership of a view to another user
> ALTER VIEW v1 OWNER TO `alf@melmak.et`

-- Change the view schema binding to adopt type evolution
> ALTER VIEW v1 WITH SCHEMA TYPE EVOLUTION;

-- Apply three tags to the view named `test`.
> ALTER VIEW test SET TAGS ('tag1' = 'val1', 'tag2' = 'val2', 'tag3' = 'val3');

-- Remove three tags from the view named `test`.
> ALTER VIEW test UNSET TAGS ('tag1', 'tag2', 'tag3');

-- Alter the metric view `region_sales_metrics` defined in CREATE VIEW
-- to drop the `total_revenue_for_open_orders` measure.
> ALTER VIEW region_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: 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)
  $$;

> 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

 # Detailed Table Information
 Catalog                     main
 Database                    default
 Table                       region_sales_metrics
 Owner                       alf@melmak.et
 Created Time                Sun May 18 23:45:25 UTC 2025
 Last Access                 UNKNOWN
 Created By                  Spark
 Type                        METRIC_VIEW
 Comment                     A metric view for regional sales metrics.
 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)
   "
 Language                    YAML
 Table Properties            [metric_view.from.name=samples.tpch.orders, metric_view.from.type=ASSET, metric_view.where=o_orderdate > '1990-01-01']

-- Declare that each order in the `orders_mv` metric view matches one customer
-- in the `customers_mv` metric view, joined on the shared `customer_id` column.
> ALTER VIEW main.sales.orders_mv ADD CONSTRAINT orders_customer
    MANY TO ONE RELATIONSHIP TO main.sales.customers_mv
    USING (customer_id);

-- Declare a relationship that refers to the target by an alias in the ON condition.
> ALTER VIEW main.travel.flights_mv ADD CONSTRAINT departure_city
    MANY TO ONE RELATIONSHIP TO main.travel.cities_mv AS c
    ON flights_mv.departure_city_id = c.city_id;

-- Drop the relationship.
> ALTER VIEW main.travel.flights_mv DROP CONSTRAINT IF EXISTS departure_city;