Viste in Azure SQL Data WarehouseViews in Azure SQL Data Warehouse

Suggerimenti per l'uso di viste T-SQL in Azure SQL Data Warehouse per lo sviluppo di soluzioni.Tips for using T-SQL views in Azure SQL Data Warehouse for developing solutions.

Perché usare le viste?Why use views?

Le viste risultano utili in molti modi diversi per migliorare la qualità della soluzione.Views can be used in a number of different ways to improve the quality of your solution. Questo articolo contiene alcuni esempi che illustrano come migliorare la soluzione con le viste e le limitazioni da prendere in considerazione.This article highlights a few examples of how to enrich your solution with views, as well as the limitations that need to be considered.

Nota

La sintassi per CREATE VIEW non viene illustrata in questo articolo.Syntax for CREATE VIEW is not discussed in this article. Per altre informazioni, vedere la documentazione per CREATE VIEW.For more information, see the CREATE VIEW documentation.

Astrazione dell'architetturaArchitectural abstraction

Un modello di applicazione comune consiste nel ricreare le tabelle usando CREATE TABLE AS SELECT (CTAS) seguito da un modello di ridenominazione di oggetti durante il caricamento dei dati.A common application pattern is to re-create tables using CREATE TABLE AS SELECT (CTAS) followed by an object renaming pattern whilst loading data.

L'esempio seguente aggiunge nuovi record di data a una dimensione data.The following example adds new date records to a date dimension. Si noti come viene creata prima di tutto una nuova tabella, DimDate_New, che viene poi rinominata per sostituire la versione originale della tabella.Note how a new table, DimDate_New, is first created and then renamed to replace the original version of the table.

CREATE TABLE dbo.DimDate_New
WITH (DISTRIBUTION = ROUND_ROBIN
, CLUSTERED INDEX (DateKey ASC)
)
AS
SELECT *
FROM   dbo.DimDate  AS prod
UNION ALL
SELECT *
FROM   dbo.DimDate_stg AS stg
;

RENAME OBJECT DimDate TO DimDate_Old;
RENAME OBJECT DimDate_New TO DimDate;

Tuttavia, usando questo approccio la visualizzazione delle tabelle nella vista dell'utente potrebbe non essere costante e potrebbero essere restituiti messaggi di errore di tabella non esistente.However, this approach can result in tables appearing and disappearing from a user's view as well as "table does not exist" error messages. Le viste possono essere usate per garantire agli utenti un livello di presentazione coerente mentre vengono rinominati gli oggetti sottostanti.Views can be used to provide users with a consistent presentation layer whilst the underlying objects are renamed. Fornendo l'accesso ai dati tramite le viste, gli utenti non devono avere visibilità sulle tabelle sottostanti.By providing access to data through views, users do not need visibility to the underlying tables. Questo livello offre un'esperienza utente coerente, assicurando allo stesso tempo che i progettisti del data warehouse possano sviluppare il modello di dati.This layer provides a consistent user experience while ensuring that the data warehouse designers can evolve the data model. La possibilità di sviluppare le tabelle sottostanti implica che i progettisti possono usare CTAS per ottimizzare le prestazioni durante il processo di caricamento dei dati.Being able to evolve the underlying tables means designers can use CTAS to maximize performance during the data loading process.

Ottimizzazione delle prestazioniPerformance optimization

Le viste possono anche essere usate per creare join ottimizzati per le prestazioni tra le tabelle.Views can also be utilized to enforce performance optimized joins between tables. Ad esempio, una vista può incorporare una chiave di distribuzione ridondante come parte dei criteri di join per ridurre al minimo lo spostamento dei dati.For example, a view can incorporate a redundant distribution key as part of the joining criteria to minimize data movement. Un altro vantaggio delle viste potrebbe essere l'applicazione di una query specifica o di un hint di join.Another benefit of a view could be to force a specific query or joining hint. Usando le viste in questo modo, i join vengono sempre eseguiti in modo ottimale senza che gli utenti debbano ricordare il costrutto corretto per i relativi join.Using views in this manner guarantees that joins are always performed in an optimal fashion avoiding the need for users to remember the correct construct for their joins.

LimitazioniLimitations

Le viste in SQL Data Warehouse sono archiviate solo come metadati.Views in SQL Data Warehouse are stored as metadata only. Di conseguenza, le opzioni seguenti non sono disponibili:Consequently, the following options are not available:

  • Non esiste alcuna opzione di binding dello schemaThere is no schema binding option
  • Le tabelle di base non possono essere aggiornate tramite la vistaBase tables cannot be updated through the view
  • Non è possibile creare visualizzazioni sulle tabelle temporaneeViews cannot be created over temporary tables
  • Non è disponibile alcun supporto per gli hint EXPAND/NOEXPANDThere is no support for the EXPAND / NOEXPAND hints
  • Non sono disponibili viste indicizzate in SQL Data WarehouseThere are no indexed views in SQL Data Warehouse

Passaggi successiviNext steps

Per altri suggerimenti sullo sviluppo, vedere Panoramica sullo sviluppo per SQL Data Warehouse.For more development tips, see SQL Data Warehouse development overview.