Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
W tym artykule opisano opcje używania technologii PolyBase do wykonywania zapytań dotyczących danych zewnętrznych, nazywanych wirtualizacją danych, dla różnych zewnętrznych źródeł danych.
Składnia języka T-SQL używana w technologii PolyBase
Aby użyć technologii PolyBase, należy utworzyć tabele zewnętrzne, aby odwoływać się do danych zewnętrznych. Zapoznaj się z:
- UTWÓRZ UWIERZYTELNIENIE ZAKRESU BAZY DANYCH (Transact-SQL)
- UTWÓRZ ZEWNĘTRZNE ŹRÓDŁO DANYCH (Transact-SQL)
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- UTWÓRZ TABELĘ ZEWNĘTRZNĄ (Transact-SQL)
- UTWÓRZ STATYSTYKI (Transact-SQL)
Uwaga / Notatka
Aby można było korzystać z programu PolyBase, musisz mieć uprawnienia administratora systemu lub kontroli na poziomie serwera w bazie danych.
Tutorials
Aby zapoznać się z przykładami zapytań, zobacz Zapytania polyBase.
Aby uzyskać więcej samouczków dotyczących różnych zewnętrznych źródeł danych, zapoznaj się z tematem:
- Hadoop
- Azure Blob Storage
- SQL Server
- Oracle
- Teradata
- MongoDB
- Typy ogólne ODBC
- Przechowywanie obiektów zgodne ze S3
- CSV
- Tabela delty
Funkcje metadanych pliku
Czasami musisz wiedzieć, który plik lub folder źródłowy koreluje z konkretnym wierszem w zbiorze wyników.
Możesz używać funkcji filepath oraz filename zwracać nazwy plików i/lub ścieżkę w zbiorze wyników. Możesz też użyć ich do filtrowania danych na podstawie nazwy pliku i/lub ścieżki folderu. W kolejnych sekcjach znajdziesz krótkie opisy wraz z próbkami.
Funkcja nazwy pliku
Funkcja ta zwraca nazwę pliku, z której pochodzi wiersz.
Typ danych zwrotnych to nvarchar(1024). Dla optymalnej wydajności zawsze przelewaj wynik funkcji nazwy pliku na odpowiedni typ danych. Jeśli używasz typu danych znakowego, upewnij się, że zastosowano odpowiednią długość.
Poniższy przykład odczytuje pliki danych NYC Yellow Taxi za ostatnie trzy miesiące 2017 roku i zwraca liczbę przejazdów w jednym pliku. Część OPENROWSET zapytania określa, które pliki zostaną odczytane.
SELECT
nyc.filename() AS [filename]
,COUNT_BIG(*) AS [rows]
FROM
OPENROWSET(
BULK 'parquet/taxi/year=2017/month=9/*.parquet',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT='PARQUET'
) nyc
GROUP BY nyc.filename();
Poniższy przykład pokazuje, jak filename() można użyć klauzuli WHERE do filtrowania plików do odczytu. Uzyskuje dostęp do całego folderu w OPENROWSET części zapytania oraz filtruje pliki w klauzuli WHERE .
Twoje wyniki będą takie same jak w poprzednim przykładzie.
SELECT
r.filename() AS [filename]
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'csv/taxi/yellow_tripdata_2017-*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
FIRSTROW = 2)
WITH (C1 varchar(200) ) AS [r]
WHERE
r.filename() IN ('yellow_tripdata_2017-10.csv', 'yellow_tripdata_2017-11.csv', 'yellow_tripdata_2017-12.csv')
GROUP BY
r.filename()
ORDER BY
[filename];
Funkcja ścieżki pliku
Funkcja ta zwraca pełną ścieżkę lub część ścieżki:
- Wywołany bez parametru, zwraca pełną ścieżkę pliku, z której pochodzi wiersz.
- Gdy zostanie wywołana z parametrem, zwraca część ścieżki, która odpowiada symbolowi wieloznacznemu na pozycji określonej w parametrze. Na przykład wartość parametru 1 zwraca część ścieżki odpowiadającą pierwszemu symbolowi wieloznacznemu.
Typ danych zwrotnych to nvarchar(1024). Dla optymalnej wydajności zawsze należy przypisać wynik filepath funkcji odpowiedniemu typowi danych. Jeśli używasz typu danych zawierającego znaki, upewnij się, że używana jest odpowiednia długość.
Poniższy przykład zawiera pliki danych NYC Yellow Taxi za ostatnie trzy miesiące 2017 roku. Zwraca liczbę przejazdów na podstawie ścieżki pliku. Część OPENROWSET zapytania określa, które pliki zostaną odczytane.
SELECT
r.filepath() AS filepath
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'csv/taxi/yellow_tripdata_2017-1*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
FIRSTROW = 2
)
WITH (
vendor_id INT
) AS [r]
GROUP BY
r.filepath()
ORDER BY
filepath;
Poniższy przykład pokazuje, jak filepath() można użyć klauzuli WHERE do filtrowania plików do odczytu.
Możesz użyć symboli wieloznacznych w części OPENROWSET zapytania i filtrować pliki w klauzuli WHERE. Twoje wyniki będą takie same jak w poprzednim przykładzie.
SELECT
r.filepath() AS filepath
,r.filepath(1) AS [year]
,r.filepath(2) AS [month]
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'csv/taxi/yellow_tripdata_*-*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
FIRSTROW = 2
)
WITH (
vendor_id INT
) AS [r]
WHERE
r.filepath(1) IN ('2017')
AND r.filepath(2) IN ('10', '11', '12')
GROUP BY
r.filepath()
,r.filepath(1)
,r.filepath(2)
ORDER BY
filepath;