Azure Synapse Analytics'te sunucusuz SQL havuzunu kullanarak görünüm oluşturma ve kullanma
Bu bölümde, sunucusuz SQL havuzu sorgularını sarmak için görünümleri oluşturmayı ve kullanmayı öğreneceksiniz. Görünümler, bu sorguları yeniden kullanmanıza olanak sağlar. Power BI gibi araçları sunucusuz SQL havuzuyla birlikte kullanmak istiyorsanız görünümler de gereklidir.
Önkoşullar
İlk adımınız, görünümün oluşturulacağı bir veritabanı oluşturmak ve bu veritabanında kurulum betiğini yürüterek Azure depolamada kimlik doğrulaması yapmak için gereken nesneleri başlatmaktır. Bu makaledeki tüm sorgular örnek veritabanınızda yürütülür.
Dış veriler üzerinde görünümler
Görünümleri, normal SQL Server görünümleri oluşturduğunuz gibi oluşturabilirsiniz. Aşağıdaki sorgu ,population.csv dosyasını okuyan bir görünüm oluşturur.
Not
Oluşturduğunuz veritabanını kullanmak için sorgudaki ilk satırı ([mydbname] gibi) değiştirin.
USE [mydbname];
GO
DROP VIEW IF EXISTS populationView;
GO
CREATE VIEW populationView AS
SELECT *
FROM OPENROWSET(
BULK 'csv/population/population.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
FIELDTERMINATOR =',',
ROWTERMINATOR = '\n'
)
WITH (
[country_code] VARCHAR (5) COLLATE Latin1_General_BIN2,
[country_name] VARCHAR (100) COLLATE Latin1_General_BIN2,
[year] smallint,
[population] bigint
) AS [r];
Görünüm, depolama alanınızın kök URL'sini bir olarak DATA_SOURCE
kullanır EXTERNAL DATA SOURCE
ve dosyalara göreli bir dosya yolu ekler.
Delta Lake görünümleri
Delta Lake klasörünün en üstünde görünümler oluşturuyorsanız, dosya yolunu belirtmek yerine seçenek sonrasında kök klasörün BULK
konumunu belirtmeniz gerekir.
OPENROWSET
Delta Lake klasöründeki verileri okuyan işlev, klasör yapısını inceler ve dosya konumlarını otomatik olarak tanımlar.
create or alter view CovidDeltaLake
as
select *
from openrowset(
bulk 'covid',
data_source = 'DeltaLakeStorage',
format = 'delta'
) with (
date_rep date,
cases int,
geo_id varchar(6)
) as rows
Daha fazla bilgi için Synapse sunucusuz SQL havuzu kendi kendine yardım sayfasını ve Azure Synapse Analytics bilinen sorunları gözden geçirin.
Bölümlenmiş görünümler
Hiyerarşik klasör yapısında bölümlenmiş bir dosya kümeniz varsa, dosya yolundaki joker karakterleri kullanarak bölüm desenini açıklayabilirsiniz. Klasör yolunun FILEPATH
bölümlerini bölümleme sütunları olarak göstermek için işlevini kullanın.
CREATE VIEW TaxiView
AS SELECT *, nyc.filepath(1) AS [year], nyc.filepath(2) AS [month]
FROM
OPENROWSET(
BULK 'parquet/taxi/year=*/month=*/*.parquet',
DATA_SOURCE = 'sqlondemanddemo',
FORMAT='PARQUET'
) AS nyc
Bölümlenmiş görünümler, bölümleme sütunlarında filtrelerle sorguladığınızda bölüm eleme gerçekleştirerek sorgularınızın performansını artırabilir. Ancak, tüm sorgular bölüm eleme desteğine sahiptir, bu nedenle bazı en iyi yöntemleri izlemek önemlidir.
Bölümün ortadan kaldırılmasını sağlamak için, alt sorguları filtrelerde kullanmaktan kaçının, çünkü bunlar bölümleri ortadan kaldırma özelliğini engelleyebilir. Bunun yerine, alt sorgunun sonucunu filtreye değişken olarak geçirin.
SQL sorgularında JOIN'leri kullanırken, sorgu planının karmaşıklığını azaltmak ve doğru bölüm eleme olasılığını artırmak için filtre koşulunu NVARCHAR olarak bildirin. Bölüm sütunları genellikle NVARCHAR(1024) olarak çıkarılır, bu nedenle koşul için aynı türün kullanılması örtük atama gereksinimini önler ve bu da sorgu planının karmaşıklığını artırabilir.
Delta Lake bölümlenmiş görünümleri
Delta Lake depolamanın üzerinde bölümlenmiş görünümler oluşturuyorsanız, yalnızca bir kök Delta Lake klasörü belirtebilirsiniz ve işlevini kullanarak FILEPATH
bölümleme sütunlarını açıkça göstermeniz gerekmez:
CREATE OR ALTER VIEW YellowTaxiView
AS SELECT *
FROM
OPENROWSET(
BULK 'yellow',
DATA_SOURCE = 'DeltaLakeStorage',
FORMAT='DELTA'
) nyc
OPENROWSET
işlevi temel delta lake klasörünün yapısını inceler ve bölümleme sütunlarını otomatik olarak tanımlayıp kullanıma sunar. Bölümleme sütununu WHERE
bir sorgunun yan tümcesine yerleştirirseniz bölüm eleme otomatik olarak yapılır.
İşlevdeki (yellow
bu örnekte) veri kaynağında DeltaLakeStorage
OPENROWSET
tanımlanan URI ile LOCATION
birleştirilen klasör adı, adlı _delta_log
alt klasörü içeren kök Delta Lake klasörüne başvurmalıdır.
Daha fazla bilgi için Synapse sunucusuz SQL havuzu kendi kendine yardım sayfasını ve Azure Synapse Analytics bilinen sorunları gözden geçirin.
JSON görünümleri
Dosyalardan getirilen sonuç kümesinin üzerinde bazı ek işlemler yapmanız gerekiyorsa görünümler iyi bir seçimdir. Bir örnek, JSON belgelerindeki değerleri ayıklamak için JSON işlevlerini uygulamamız gereken JSON dosyalarını ayrıştırmak olabilir:
CREATE OR ALTER VIEW CovidCases
AS
select
*
from openrowset(
bulk 'latest/ecdc_cases.jsonl',
data_source = 'covid',
format = 'csv',
fieldterminator ='0x0b',
fieldquote = '0x0b'
) with (doc nvarchar(max)) as rows
cross apply openjson (doc)
with ( date_rep datetime2,
cases int,
fatal int '$.deaths',
country varchar(100) '$.countries_and_territories')
İşlev, OPENJSON
her satırda bir JSON belgesi içeren JSONL dosyasındaki her satırı metin biçiminde ayrıştırıyor.
Kapsayıcılarda Azure Cosmos DB görünümleri
Kapsayıcıda Azure Cosmos DB analiz depolama alanı etkinleştirildiyse görünümler Azure Cosmos DB kapsayıcılarının üzerinde oluşturulabilir. Azure Cosmos DB hesap adı, veritabanı adı ve kapsayıcı adı görünümün bir parçası olarak eklenmelidir ve salt okunur erişim anahtarı görünümün başvurduğu veritabanı kapsamlı kimlik bilgilerine yerleştirilmelidir.
CREATE DATABASE SCOPED CREDENTIAL MyCosmosDbAccountCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 's5zarR2pT0JWH9k8roipnWxUYBegOuFGjJpSjGlR36y86cW0GQ6RaaG8kGjsRAQoWMw1QKTkkX8HQtFpJjC8Hg==';
GO
CREATE OR ALTER VIEW Ecdc
AS SELECT *
FROM OPENROWSET(
PROVIDER = 'CosmosDB',
CONNECTION = 'Account=synapselink-cosmosdb-sqlsample;Database=covid',
OBJECT = 'Ecdc',
CREDENTIAL = 'MyCosmosDbAccountCredential'
) with ( date_rep varchar(20), cases bigint, geo_id varchar(6) ) as rows
Daha fazla bilgi için bkz. Azure Synapse Link'te Sunucusuz SQL havuzuyla Azure Cosmos DB verilerini sorgulama.
Görünüm kullanma
Sorgularınızdaki görünümleri, SQL Server sorgulardaki görünümleri kullandığınız gibi kullanabilirsiniz.
Aşağıdaki sorgu, Görünüm oluşturma bölümünde oluşturduğumuz population_csvgörünümünü kullanmayı gösterir. 2019 yılında nüfuslarıyla birlikte ülke/bölge adlarını azalan düzende döndürür.
Not
Oluşturduğunuz veritabanını kullanmak için sorgudaki ilk satırı ([mydbname] gibi) değiştirin.
USE [mydbname];
GO
SELECT
country_name, population
FROM populationView
WHERE
[year] = 2019
ORDER BY
[population] DESC;
Görünümü sorguladığınızda hatalarla veya beklenmeyen sonuçlarla karşılaşabilirsiniz. Bu büyük olasılıkla görünümün değiştirilmiş veya artık mevcut olmayan sütunlara veya nesnelere başvurduğunu gösterir. Görünüm tanımını, temel alınan şema değişiklikleriyle uyumlu olacak şekilde el ile ayarlamanız gerekir.
Sonraki adımlar
Farklı dosya türlerini sorgulama hakkında bilgi için Tek CSV dosyasını sorgulama, Parquet dosyalarını sorgulama ve JSON dosyalarını sorgulama makalelerine bakın.