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: Az SQL Server 2016 (13.x) és újabb verziói
az Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Platform System (PDW)
Warehouse a Microsoft Fabricben
Létrehoz egy külső táblát.
Ez a cikk a választott SQL-termék szintaxisát, argumentumait, megjegyzéseit, engedélyeit és példáit ismerteti.
Termék kiválasztása
A következő sorban válassza ki a kívánt terméknevet, és csak az adott termék adatai jelenjenek meg.
* SQL Server *
Áttekintés: SQL Server
Ez a parancs létrehoz egy külső táblát a PolyBase számára a Hadoop-fürtben vagy az Azure Blob Storage PolyBase külső táblában tárolt adatok eléréséhez, amely a Hadoop-fürtben vagy az Azure Blob Storage-ban tárolt adatokra hivatkozik.
A következőkre vonatkozik: SQL Server 2016 (vagy újabb)
Használjon külső táblát egy külső adatforrással a PolyBase-lekérdezésekhez. A külső adatforrások kapcsolat létesítésére és az elsődleges használati esetek támogatására szolgálnak:
- Adatvirtualizálás és adatbetöltés adatvirtualizálással a PolyBase használatával az SQL Serverben
- Tömeges betöltési műveletek SQL Server vagy SQL Database használatával
BULK INSERTvagyOPENROWSEThasználatával
A külső táblák külső adatforráson alapulnak.
Transact-SQL szintaxis konvenciók
Szintaxis
-- Create a new external table
CREATE EXTERNAL TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
( <column_definition> [ ,...n ] )
WITH (
LOCATION = 'folder_or_filepath',
DATA_SOURCE = external_data_source_name,
[ FILE_FORMAT = external_file_format_name ]
[ , <reject_options> [ ,...n ] ]
)
[;]
<reject_options> ::=
{
| REJECT_TYPE = value | percentage
| REJECT_VALUE = reject_value
| REJECT_SAMPLE_VALUE = reject_sample_value,
| REJECTED_ROW_LOCATION = '/REJECT_Directory'
}
<column_definition> ::=
column_name <data_type>
[ COLLATE collation_name ]
[ NULL | NOT NULL ]
Érvek
{ database_name.schema_name.table_name | schema_name.table_name | table_name}
A létrehozandó tábla egy-háromrészes neve.
Külső táblák esetében az SQL csak a tábla metaadatait tárolja, valamint a Hadoopban vagy az Azure Blob Storage-ban hivatkozott fájlra vagy mappára vonatkozó alapvető statisztikákat. A rendszer nem helyez át vagy tárol tényleges adatokat az SQL Serveren.
Fontos
A legjobb teljesítmény érdekében, ha a külső adatforrás-illesztőprogram támogatja a háromrészes nevet, erősen ajánlott megadni a háromrészes nevet.
< > column_definition [ ,... n ]
A CREATE EXTERNAL TABLE támogatja az oszlopok nevének, adattípusának, nullbilitásának és rendezésének konfigurálását. Külső táblák alapértelmezett KORLÁTOZÁSát nem használhatja.
Az oszlopdefinícióknak, beleértve az adattípusokat és az oszlopok számát, meg kell egyeznie a külső fájlok adataival. Ha eltérés van, a fájlsorokat a rendszer elutasítja a tényleges adatok lekérdezésekor.
LOCATION = "folder_or_filepath"
Megadja a Hadoopban vagy az Azure Blob Storage-ban tárolt tényleges adatok mappáit vagy fájlelérési útját és fájlnevét. Emellett az S3-kompatibilis objektumtárolás az SQL Server 2022-től (16.x)) is támogatott. A hely a gyökérmappából indul ki. A gyökérmappa a külső adatforrásban megadott adathely.
Az SQL Serverben a CREATE EXTERNAL TABLE utasítás létrehozza az elérési utat és a mappát, ha még nem létezik. Ezután az INSERT INTO használatával exportálhat adatokat egy helyi SQL Server-táblából a külső adatforrásba. További információ: PolyBase-lekérdezési forgatókönyvek.
Ha a LOCATION billentyűt mappaként adja meg, a külső táblából kiválasztott PolyBase-lekérdezések lekérik a fájlokat a mappából és annak összes almappájából. A Hadoophoz hasonlóan a PolyBase sem ad vissza rejtett mappákat. Nem ad vissza olyan fájlokat sem, amelyeknek a neve aláhúzással (_) vagy ponttal (.) kezdődik.
A következő képen látható példában, ha LOCATION='/webdata/', egy PolyBase-lekérdezés mydata.txt és mydata2.txtsorait adja vissza. Nem adja vissza mydata3.txt, mert egy rejtett almappában lévő fájl. És nem adja vissza _hidden.txt, mert rejtett fájl.
Az alapértelmezett és csak a gyökérmappából való olvasás módosításához állítsa a <polybase.recursive.traversal> attribútumot "false" értékre a core-site.xml konfigurációs fájlban. Ez a fájl az SQL Server <SqlBinRoot>\PolyBase\Hadoop\Conf gyökerének bin alatt található. Például C:\Program Files\Microsoft SQL Server\MSSQL13.XD14\MSSQL\Binn.
DATA_SOURCE = external_data_source_name
Megadja annak a külső adatforrásnak a nevét, amely a külső adatok helyét tartalmazza. Ez a hely egy Hadoop fájlrendszer (HDFS), egy Azure Blob Storage-tároló vagy az Azure Data Lake Store. Külső adatforrás létrehozásához használja CREATE EXTERNAL DATA SOURCE (Transact-SQL).
FILE_FORMAT = external_file_format_name
Megadja annak a külső fájlformátum objektumnak a nevét, amely a külső adatok fájltípusát és tömörítési módját tárolja. Külső fájlformátum létrehozásához használja a CREATE EXTERNAL FILE FORMAT (Transact-SQL).
A külső fájlformátumokat több hasonló külső fájl is újra felhasználhatja.
Elutasítási beállítások
Ez a beállítás csak olyan külső adatforrások esetén használható, ahol TÍPUS = HADOOP.
Megadhatja az elutasítási paramétereket, amelyek meghatározzák, hogy a PolyBase hogyan fogja kezelni a külső adatforrásból lekért piszkos rekordokat. Az adatrekordok akkor minősülnek "piszkosnak", ha a tényleges adattípusok vagy az oszlopok száma nem egyezik a külső tábla oszlopdefinícióival.
Ha nem ad meg vagy módosít elutasító értékeket, a PolyBase alapértelmezett értékeket használ. Az elutasítási paraméterekkel kapcsolatos információk további metaadatokként lesznek tárolva, amikor külső táblát hoz létre a CREATE EXTERNAL TABLE utasítással. Ha egy jövőbeli SELECT utasítás vagy a SELECT INTO SELECT utasítás kiválasztja a külső táblából származó adatokat, a PolyBase az elutasítási beállításokkal határozza meg azoknak a soroknak a számát vagy százalékát, amelyeket a tényleges lekérdezés meghiúsulása előtt el lehet utasítani. A lekérdezés (részleges) eredményeket ad vissza az elutasítási küszöbérték túllépéséig. Ezután a megfelelő hibaüzenettel meghiúsul.
REJECT_TYPE = érték | százalék
Tisztázza, hogy a REJECT_VALUE beállítás konstans értékként vagy százalékként van-e megadva.
érték
REJECT_VALUE egy literálérték, nem százalék. A lekérdezés sikertelen lesz, ha az elutasított sorok száma meghaladja a reject_value.
Ha például REJECT_VALUE = 5 és REJECT_TYPE = value, a SELECT lekérdezés öt sor elutasítása után meghiúsul.
százalékos
REJECT_VALUE százalékos érték, nem pedig literális érték. A lekérdezés sikertelen lesz, ha a sikertelen sorok százalékos meghaladja a reject_value. A sikertelen sorok százalékos aránya időközönként lesz kiszámítva.
REJECT_VALUE = reject_value
Megadja a lekérdezés sikertelensége előtt elutasítható sorok értékét vagy százalékos arányát.
REJECT_TYPE = érték esetén reject_value 0 és 2 147 483 647 közötti egész számnak kell lennie.
REJECT_TYPE = százalékérték esetén reject_value 0 és 100 közötti lebegőpontosnak kell lennie.
REJECT_SAMPLE_VALUE = reject_sample_value
Ez az attribútum REJECT_TYPE = százalékos érték megadásakor szükséges. Meghatározza, hogy hány sort kíséreljen meg lekérni, mielőtt a PolyBase újraszámítja az elutasított sorok százalékos arányát.
A reject_sample_value paraméternek 0 és 2 147 483 647 közötti egész számnak kell lennie.
Ha például REJECT_SAMPLE_VALUE = 1000, a PolyBase kiszámítja a sikertelen sorok százalékos arányát, miután 1000 sort próbált importálni a külső adatfájlból. Ha a sikertelen sorok százalékos aránya kisebb, mint reject_value, a PolyBase további 1000 sort kísérel meg lekérni. A sikertelen sorok százalékos arányát továbbra is újraszámolja, miután minden további 1000 sort megpróbál importálni.
Jegyzet
Mivel a PolyBase időközönként kiszámítja a sikertelen sorok százalékos arányát, a sikertelen sorok tényleges százalékos aránya meghaladhatja reject_value.
Példa:
Ez a példa bemutatja, hogyan működik együtt a három REJECT beállítás. Ha például REJECT_TYPE = százalék, REJECT_VALUE = 30 és REJECT_SAMPLE_VALUE = 100, a következő forgatókönyv fordulhat elő:
- A PolyBase megpróbálja lekérni az első 100 sort; 25 sikertelen és 75 sikeres.
- A sikertelen sorok százalékos értéke 25%lesz, ami kisebb, mint a 30%elvetésének értéke. Ennek eredményeként a PolyBase továbbra is beolvassa az adatokat a külső adatforrásból.
- A PolyBase megkísérli betölteni a következő 100 sort; ezúttal 25 sor sikeres és 75 sor meghiúsul.
- A sikertelen sorok százalékos aránya 50%lesz újraszámolva. A sikertelen sorok százalékos aránya túllépte a 30% elutasítási értéket.
- A PolyBase-lekérdezés 50% elutasított sortal meghiúsul, miután megkísérelte visszaadni az első 200 sort. Egyező sorokat ad vissza a rendszer, mielőtt a PolyBase-lekérdezés észleli az elutasítási küszöbérték túllépésének észlelését.
REJECTED_ROW_LOCATION = címtárhely
A következőkre vonatkozik: SQL Server 2019 CU6 és újabb verzióira, az Azure Synapse Analyticsre.
Megadja a külső adatforrás azon könyvtárát, amelybe az elutasított sorokat és a megfelelő hibafájlt meg kell írni.
Ha a megadott elérési út nem létezik, a PolyBase létrehoz egyet az Ön nevében. A rendszer létrehoz egy gyermekkönyvtárat _rejectedrowsnéven. A _ karakter biztosítja, hogy a könyvtár más adatfeldolgozás céljából ne legyen elérhető, kivéve, ha a helyparaméter kifejezetten el van nevezve. Ebben a könyvtárban létrejön egy mappa a betöltési idő alapján YearMonthDay -HourMinuteSecond formátumban (például 20230330-173205). Ebben a mappában kétféle fájltípus van megírva, a _reason fájl és az adatfájl. Ez a beállítás csak olyan külső adatforrásokhoz használható, ahol TYPE = HADOOP és külső táblákhoz DELIMITEDTEXTFORMAT_TYPE. További információ: CREATE EXTERNAL DATA SOURCE and CREATE EXTERNAL FILE FORMAT (Transact-SQL).
Annak oka, hogy a fájlok és az adatfájlok is rendelkeznek a CTAS-utasításhoz társított queryID. Mivel az adatok és az ok külön fájlokban találhatók, a megfelelő fájloknak egyező utótagjuk van.
Engedélyek
A következő felhasználói engedélyek szükségesek:
- TÁBLA LÉTREHOZÁSA
- SÉMA MÓDOSÍTÁSA
- KÜLSŐ ADATFORRÁS MÓDOSÍTÁSA
- KÜLSŐ FÁJLFORMÁTUM MÓDOSÍTÁSA (csak a Hadoop és az Azure Storage külső adatforrásokra vonatkozik)
- CONTROL DATABASE (csak a Hadoopra és az Azure Storage külső adatforrásokra vonatkozik)
Vegye figyelembe, hogy a CREATE EXTERNAL TABLE parancsban használt DATABASE SCOPED HITELESÍTŐ ADATOKban megadott távoli bejelentkezésnek Read engedéllyel kell rendelkeznie a LOCATION paraméterben megadott külső adatforrás elérési útjának/táblájának/gyűjteményének. Ha ezt a KÜLSŐ TÁBLÁt szeretné használni az adatok Hadoopba vagy Azure Storage-beli külső adatforrásba való exportálásához, akkor a megadott bejelentkezésnek írási engedéllyel kell rendelkeznie a LOCATION-ban megadott útvonalon. A Hadoop nem támogatott az SQL Server 2022 -ben (16.x).
Az Azure Blob Storage esetében az Azure Portalon, az Azure Blob Storage- vagy ADLS Gen2-tárfiókokban a hozzáférési kulcsok és a közös hozzáférésű jogosultságkód (SAS) konfigurálásakor konfigurálja az Engedélyezett engedélyeket, adjon meg legalább Olvasási és Írási engedélyeket. listaengedélyre is szükség lehet a mappák közötti kereséshez. Az engedélyezett erőforrástípusok között tároló és objektum is ki kell jelölnie.
Fontos
Az ALTER ANY KÜLSŐ ADATFORRÁS engedély lehetővé teszi bármely egyszerű felhasználó számára, hogy külső adatforrás-objektumokat hozzon létre és módosítson, ezért lehetővé teszi az adatbázis hatókörébe tartozó összes hitelesítő adat elérését is az adatbázisban. Ezt az engedélyt kiemelt jogosultságúnak kell tekinteni, ezért csak megbízható rendszerbiztonsági tagoknak adható.
Hibakezelés
A CREATE EXTERNAL TABLE utasítás végrehajtása során a PolyBase megpróbál csatlakozni a külső adatforráshoz. Ha a kapcsolódási kísérlet meghiúsul, az utasítás sikertelen lesz, és a külső tábla nem jön létre. Egy vagy több percig is eltarthat, amíg a parancs meghibásodik, mivel a PolyBase újrapróbálkozza a kapcsolatot, mielőtt végül meghiúsul a lekérdezés.
Megjegyzések
Alkalmi lekérdezési forgatókönyvekben, például SELECT FROM EXTERNAL TABLEa PolyBase egy ideiglenes táblában tárolja a külső adatforrásból lekért sorokat. A lekérdezés befejezése után a PolyBase eltávolítja és törli az ideiglenes táblát. A rendszer nem tárol állandó adatokat SQL-táblákban.
Ezzel szemben az importálási forgatókönyvben( például a SELECT INTO FROM EXTERNAL TABLE) a PolyBase a külső adatforrásból lekért sorokat állandó adatként tárolja az SQL-táblában. Az új tábla a lekérdezés végrehajtása során jön létre, amikor a PolyBase lekéri a külső adatokat.
A PolyBase a lekérdezési számítások egy részét leküldi a Hadoopba a lekérdezési teljesítmény javítása érdekében. Ezt a műveletet predikátum leküldéses leküldésnek nevezzük. Az engedélyezéshez adja meg a Hadoop erőforrás-kezelő helybeállítását a KÜLSŐ ADATFORRÁS LÉTREHOZÁSA (Transact-SQL) mezőben.
Számos olyan külső táblát hozhat létre, amelyek ugyanarra vagy különböző külső adatforrásokra hivatkoznak.
Korlátozások
Mivel egy külső tábla adatai nem az SQL Server közvetlen felügyelete alatt vannak, külső folyamattal bármikor módosíthatók vagy eltávolíthatók. Ennek eredményeképpen a külső táblák lekérdezési eredményei nem garantáltan determinisztikusak. Ugyanez a lekérdezés különböző eredményeket adhat vissza minden alkalommal, amikor egy külső táblán fut. Hasonlóképpen előfordulhat, hogy egy lekérdezés meghiúsul, ha a külső adatokat áthelyezik vagy eltávolítják.
Több külső táblát is létrehozhat, amelyek mindegyike különböző külső adatforrásokra hivatkozik. Ha egyszerre futtat lekérdezéseket különböző Hadoop-adatforrásokkal, akkor minden Hadoop-forrásnak ugyanazt a "hadoop-kapcsolat" kiszolgálókonfigurációs beállítást kell használnia. Például nem futtathat egyszerre lekérdezést Egy Cloudera Hadoop-fürt és egy Hortonworks Hadoop-fürt között, mivel ezek különböző konfigurációs beállításokat használnak. A konfigurációs beállításokról és a támogatott kombinációkról lásd a PolyBase kapcsolati konfigurációját (Transact-SQL).
Ha a külső tábla DELIMITEDTEXT, CSV, PARQUETvagy DELTA használ adattípusként, a külső táblák csak CREATE STATISTICS parancsonként egy oszlop statisztikáit támogatják.
Külső táblákban csak ezek az adatdefiníciós nyelvi (DDL-) utasítások engedélyezettek:
-
CREATE TABLEésDROP TABLE -
CREATE STATISTICSésDROP STATISTICS -
CREATE VIEWésDROP VIEW
A szerkezetek és műveletek nem támogatottak:
- Külső
DEFAULTtáblaoszlopokra vonatkozó korlátozás - Adatmanipulációs nyelv (DML) a törlési, beszúrási és frissítési műveletekhez
Lekérdezési korlátozások
A PolyBase legfeljebb 33 000 fájlt használhat fel mappánként 32 egyidejű PolyBase-lekérdezés futtatásakor. Ez a maximális szám az egyes HDFS-mappákban lévő fájlokat és almappákat is tartalmazza. Ha az egyidejűség mértéke kisebb, mint 32, a felhasználó több mint 33 ezer fájlt tartalmazó HDFS-mappákon futtathat PolyBase-lekérdezéseket. Javasoljuk, hogy tartsa rövidre a külső fájl elérési útját, és HDFS-mappánként legfeljebb 30 ezer fájlt használjon. Ha túl sok fájlra hivatkozik, előfordulhat, hogy a Java virtuális gép (JVM) memóriakimaradást tapasztal.
Táblázatszélesség korlátozásai
Az SQL Server 2016-ban a PolyBase sorszélesség-korlátja 32 KB egy érvényes sor tábladefiníciónkénti maximális mérete alapján. Ha az oszlopséma összege nagyobb, mint 32 KB, a PolyBase nem tudja lekérdezni az adatokat.
Adattípus korlátozásai
A következő adattípusok nem használhatók a PolyBase külső tábláiban:
- földrajzi
- geometriai
- hierarchiaazonosító
- kép
- szöveg
- kontextus
- xml
- Bármely felhasználó által definiált típus
Az adatforrásokra vonatkozó korlátozások
Jóslat
Az Oracle szinonimái nem támogatottak a PolyBase használata esetén.
Tömböket tartalmazó mongoDB-gyűjtemények külső táblái
Ha tömböket tartalmazó MongoDB-gyűjteményekhez szeretne külső táblákat létrehozni, az Azure Data Studio sp_data_source_table_columns tárolt eljárás automatikusan elvégzi az összesimítást a MongoDB-illesztőHöz készült PolyBase ODBC-illesztőprogramon keresztül. Az Azure Data Studio Adatvirtualizálási bővítménye és sp_data_source_table_columns ugyanazokat a belső tárolt eljárásokat használják a külső séma lekérdezéséhez.
Zár
Megosztott zárolás a SCHEMARESOLUTION objektumon.
Biztonság
A külső táblák adatfájljait a Hadoop vagy az Azure Blob Storage tárolja. Ezeket az adatfájlokat a saját folyamatai hozzák létre és kezelik. A külső adatok biztonságának kezelése az Ön feladata.
Példák
Egy. Külső táblázat létrehozása szöveghatárolt formátumban lévő adatokkal
Ez a példa egy szöveghatárolt fájlokban formázott adatokat tartalmazó külső tábla létrehozásához szükséges összes lépést mutatja be. Meghatározza a külső adatforrás mydatasource és egy külső fájlformátumot myfileformat. Ezekre az adatbázisszintű objektumokra a CREATE EXTERNAL TABLE utasítás hivatkozik. További információ: CREATE EXTERNAL DATA SOURCE (Transact-SQL) és CREATE EXTERNAL FILE FORMAT (Transact-SQL).
CREATE EXTERNAL DATA SOURCE mydatasource
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://xxx.xxx.xxx.xxx:8020'
)
CREATE EXTERNAL FILE FORMAT myfileformat
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (FIELD_TERMINATOR ='|')
);
CREATE EXTERNAL TABLE ClickStream (
url varchar(50),
event_date date,
user_IP varchar(50)
)
WITH (
LOCATION='/webdata/employee.tbl',
DATA_SOURCE = mydatasource,
FILE_FORMAT = myfileformat
)
;
B. Külső tábla létrehozása RCFile formátumú adatokkal
Ez a példa egy RCFiles formátumú adatokat tartalmazó külső tábla létrehozásához szükséges összes lépést mutatja be. Meghatározza a külső adatforrás mydatasource_rc és egy külső fájlformátumot myfileformat_rc. Ezekre az adatbázisszintű objektumokra a CREATE EXTERNAL TABLE utasítás hivatkozik. További információ: CREATE EXTERNAL DATA SOURCE (Transact-SQL) és CREATE EXTERNAL FILE FORMAT (Transact-SQL).
CREATE EXTERNAL DATA SOURCE mydatasource_rc
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://xxx.xxx.xxx.xxx:8020'
)
CREATE EXTERNAL FILE FORMAT myfileformat_rc
WITH (
FORMAT_TYPE = RCFILE,
SERDE_METHOD = 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'
)
;
CREATE EXTERNAL TABLE ClickStream_rc (
url varchar(50),
event_date date,
user_ip varchar(50)
)
WITH (
LOCATION='/webdata/employee_rc.tbl',
DATA_SOURCE = mydatasource_rc,
FILE_FORMAT = myfileformat_rc
)
;
C. Külső táblázat létrehozása ORC formátumú adatokkal
Ez a példa egy ORC-fájlként formázott adatokat tartalmazó külső tábla létrehozásához szükséges összes lépést mutatja be. Meghatározza a külső adatforrás mydatasource_orc és egy külső fájlformátumot myfileformat_orc. Ezekre az adatbázisszintű objektumokra a CREATE EXTERNAL TABLE utasítás hivatkozik. További információ: CREATE EXTERNAL DATA SOURCE (Transact-SQL) és CREATE EXTERNAL FILE FORMAT (Transact-SQL).
CREATE EXTERNAL DATA SOURCE mydatasource_orc
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://xxx.xxx.xxx.xxx:8020'
)
CREATE EXTERNAL FILE FORMAT myfileformat_orc
WITH (
FORMAT = ORC,
COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
)
;
CREATE EXTERNAL TABLE ClickStream_orc (
url varchar(50),
event_date date,
user_ip varchar(50)
)
WITH (
LOCATION='/webdata/',
DATA_SOURCE = mydatasource_orc,
FILE_FORMAT = myfileformat_orc
)
;
D. Hadoop-adatok lekérdezése
ClickStream egy külső tábla, amely egy Hadoop-fürt employee.tbl tagolt szövegfájlhoz csatlakozik. Az alábbi lekérdezés ugyanúgy néz ki, mint egy standard táblán lévő lekérdezés. Ez a lekérdezés azonban lekéri az adatokat a Hadoopból, majd kiszámítja az eredményeket.
SELECT TOP 10 (url) FROM ClickStream WHERE user_ip = 'xxx.xxx.xxx.xxx';
E. Hadoop-adatok csatlakoztatása SQL-adatokkal
Ez a lekérdezés úgy néz ki, mint egy szabványos JOIN két SQL-táblán. A különbség az, hogy a PolyBase lekéri a kattintásfolyam adatait a Hadoopból, majd csatlakoztatja azokat a UrlDescription táblához. Az egyik tábla egy külső tábla, a másik pedig egy szabványos SQL-tábla.
SELECT url.description
FROM ClickStream cs
JOIN UrlDescription url ON cs.url = url.name
WHERE cs.url = 'msdn.microsoft.com';
F. Adatok importálása a Hadoopból EGY SQL-táblába
Ez a példa létrehoz egy új SQL-táblát ms_user, amely véglegesen tárolja a standard SQL-tábla user és a külső tábla ClickStreamközötti illesztés eredményét.
SELECT DISTINCT user.FirstName, user.LastName
INTO ms_user
FROM user INNER JOIN (
SELECT * FROM ClickStream WHERE cs.url = 'www.microsoft.com'
) AS ms
ON user.user_ip = ms.user_ip;
G. Külső tábla létrehozása az SQL Serverhez
Az adatbázis hatókörébe tartozó hitelesítő adatok létrehozása előtt a felhasználói adatbázisnak rendelkeznie kell egy fő kulccsal a hitelesítő adatok védelméhez. További információ: CREATE MASTER KEY (Transact-SQL) és CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
-- Create a Master Key
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo';
GO
/* specify credentials to external data source
* IDENTITY: user name for external source.
* SECRET: password for external source.
*/
CREATE DATABASE SCOPED CREDENTIAL SqlServerCredentials
WITH IDENTITY = 'username', Secret = 'password';
GO
Hozzon létre egy SQLServerInstancenevű új külső adatforrást és sqlserver.customernevű külső táblát:
/* LOCATION: Location string should be of format '<vendor>://<server>[:<port>]'.
* PUSHDOWN: specify whether computation should be pushed down to the source. ON by default.
* CREDENTIAL: the database scoped credential, created above.
*/
CREATE EXTERNAL DATA SOURCE SQLServerInstance
WITH (
LOCATION = 'sqlserver://SqlServer',
-- PUSHDOWN = ON | OFF,
CREDENTIAL = SQLServerCredentials
);
GO
CREATE SCHEMA sqlserver;
GO
/* LOCATION: sql server table/view in 'database_name.schema_name.object_name' format
* DATA_SOURCE: the external data source, created above.
*/
CREATE EXTERNAL TABLE sqlserver.customer(
C_CUSTKEY INT NOT NULL,
C_NAME VARCHAR(25) NOT NULL,
C_ADDRESS VARCHAR(40) NOT NULL,
C_NATIONKEY INT NOT NULL,
C_PHONE CHAR(15) NOT NULL,
C_ACCTBAL DECIMAL(15,2) NOT NULL,
C_MKTSEGMENT CHAR(10) NOT NULL,
C_COMMENT VARCHAR(117) NOT NULL
)
WITH (
LOCATION='tpch_10.dbo.customer',
DATA_SOURCE=SqlServerInstance
);
Én. Külső tábla létrehozása az Oracle számára
-- Create a Master Key
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
/*
* Specify credentials to external data source
* IDENTITY: user name for external source.
* SECRET: password for external source.
*/
CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = 'username', Secret = 'password';
/*
* LOCATION: Location string should be of format '<vendor>://<server>[:<port>]'.
* PUSHDOWN: specify whether computation should be pushed down to the source. ON by default.
* CONNECTION_OPTIONS: Specify driver location
* CREDENTIAL: the database scoped credential, created above.
*/
CREATE EXTERNAL DATA SOURCE external_data_source_name
WITH (
LOCATION = 'oracle://<server address>[:<port>]',
-- PUSHDOWN = ON | OFF,
CREDENTIAL = credential_name)
/*
* LOCATION: Oracle table/view in '<database_name>.<schema_name>.<object_name>' format. Note this may be case sensitive in the Oracle database.
* DATA_SOURCE: the external data source, created above.
*/
CREATE EXTERNAL TABLE customers(
[O_ORDERKEY] DECIMAL(38) NOT NULL,
[O_CUSTKEY] DECIMAL(38) NOT NULL,
[O_ORDERSTATUS] CHAR COLLATE Latin1_General_BIN NOT NULL,
[O_TOTALPRICE] DECIMAL(15,2) NOT NULL,
[O_ORDERDATE] DATETIME2(0) NOT NULL,
[O_ORDERPRIORITY] CHAR(15) COLLATE Latin1_General_BIN NOT NULL,
[O_CLERK] CHAR(15) COLLATE Latin1_General_BIN NOT NULL,
[O_SHIPPRIORITY] DECIMAL(38) NOT NULL,
[O_COMMENT] VARCHAR(79) COLLATE Latin1_General_BIN NOT NULL
)
WITH (
LOCATION='DB1.mySchema.customer',
DATA_SOURCE= external_data_source_name
);
J. Külső tábla létrehozása a Teradata számára
-- Create a Master Key
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
/*
* Specify credentials to external data source
* IDENTITY: user name for external source.
* SECRET: password for external source.
*/
CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = 'username', Secret = 'password';
/* LOCATION: Location string should be of format '<vendor>://<server>[:<port>]'.
* PUSHDOWN: specify whether computation should be pushed down to the source. ON by default.
* CONNECTION_OPTIONS: Specify driver location
* CREDENTIAL: the database scoped credential, created above.
*/
CREATE EXTERNAL DATA SOURCE external_data_source_name
WITH (
LOCATION = teradata://<server address>[:<port>],
-- PUSHDOWN = ON | OFF,
CREDENTIAL =credential_name
);
/* LOCATION: Teradata table/view in '<database_name>.<object_name>' format
* DATA_SOURCE: the external data source, created above.
*/
CREATE EXTERNAL TABLE customer(
L_ORDERKEY INT NOT NULL,
L_PARTKEY INT NOT NULL,
L_SUPPKEY INT NOT NULL,
L_LINENUMBER INT NOT NULL,
L_QUANTITY DECIMAL(15,2) NOT NULL,
L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL,
L_DISCOUNT DECIMAL(15,2) NOT NULL,
L_TAX DECIMAL(15,2) NOT NULL,
L_RETURNFLAG CHAR NOT NULL,
L_LINESTATUS CHAR NOT NULL,
L_SHIPDATE DATE NOT NULL,
L_COMMITDATE DATE NOT NULL,
L_RECEIPTDATE DATE NOT NULL,
L_SHIPINSTRUCT CHAR(25) NOT NULL,
L_SHIPMODE CHAR(10) NOT NULL,
L_COMMENT VARCHAR(44) NOT NULL
)
WITH (
LOCATION='customer',
DATA_SOURCE= external_data_source_name
);
K. Külső tábla létrehozása a MongoDB-hez
-- Create a Master Key
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
/*
* Specify credentials to external data source
* IDENTITY: user name for external source.
* SECRET: password for external source.
*/
CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = 'username', Secret = 'password';
/* LOCATION: Location string should be of format '<type>://<server>[:<port>]'.
* PUSHDOWN: specify whether computation should be pushed down to the source. ON by default.
* CONNECTION_OPTIONS: Specify driver location
* CREDENTIAL: the database scoped credential, created above.
*/
CREATE EXTERNAL DATA SOURCE external_data_source_name
WITH (
LOCATION = mongodb://<server>[:<port>],
-- PUSHDOWN = ON | OFF,
CREDENTIAL = credential_name
);
/* LOCATION: MongoDB table/view in '<database_name>.<schema_name>.<object_name>' format
* DATA_SOURCE: the external data source, created above.
*/
CREATE EXTERNAL TABLE customers(
[O_ORDERKEY] DECIMAL(38) NOT NULL,
[O_CUSTKEY] DECIMAL(38) NOT NULL,
[O_ORDERSTATUS] CHAR COLLATE Latin1_General_BIN NOT NULL,
[O_TOTALPRICE] DECIMAL(15,2) NOT NULL,
[O_ORDERDATE] DATETIME2(0) NOT NULL,
[O_COMMENT] VARCHAR(79) COLLATE Latin1_General_BIN NOT NULL
)
WITH (
LOCATION='customer',
DATA_SOURCE= external_data_source_name
);
L. S3-kompatibilis objektumtároló lekérdezése külső táblán keresztül
A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók
Az alábbi példa bemutatja, hogy a T-SQL használatával lekérdezhető egy S3-kompatibilis objektumtárolóban tárolt parquet fájl külső tábla lekérdezésével. A minta egy relatív elérési utat használ a külső adatforráson belül.
CREATE EXTERNAL DATA SOURCE s3_ds
WITH
( LOCATION = 's3://<ip_address>:<port>/'
, CREDENTIAL = s3_dc
);
GO
CREATE EXTERNAL FILE FORMAT ParquetFileFormat WITH(FORMAT_TYPE = PARQUET);
GO
CREATE EXTERNAL TABLE Region(
r_regionkey BIGINT,
r_name CHAR(25),
r_comment VARCHAR(152) )
WITH (LOCATION = '/region/', DATA_SOURCE = 's3_ds',
FILE_FORMAT = ParquetFileFormat);
GO
Kapcsolódó tartalom
* Azure SQL Database *
Áttekintés: Azure SQL Database
Létrehoz egy külső táblát, amely a következő célokra használható:
Lásd még: CREATE EXTERNAL DATA SOURCE (Transact-SQL).
Szintaxis
Adatvirtualizáláshoz (előzetes verzió)
CREATE EXTERNAL TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
( <column_definition> [ ,...n ] )
WITH (
LOCATION = 'filepath',
DATA_SOURCE = external_data_source_name,
FILE_FORMAT = external_file_format_name
)
[;]
<column_definition> ::=
column_name <data_type>
[ COLLATE collation_name ]
[ NULL | NOT NULL ]
Rugalmas lekérdezésekhez (előzetes verzió):
-- Create a table for use with elastic query
CREATE EXTERNAL TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
( <column_definition> [ ,...n ] )
WITH ( <sharded_external_table_options> )
[;]
<column_definition> ::=
column_name <data_type>
[ COLLATE collation_name ]
[ NULL | NOT NULL ]
<sharded_external_table_options> ::=
DATA_SOURCE = external_data_source_name,
SCHEMA_NAME = N'nonescaped_schema_name',
OBJECT_NAME = N'nonescaped_object_name',
[DISTRIBUTION = SHARDED(sharding_column_name) | REPLICATED | ROUND_ROBIN]]
)
[;]
Érvek
{ database_name.schema_name.table_name | schema_name.table_name | table_name}
A létrehozandó tábla egy-háromrészes neve.
Külső táblák esetében az SQL csak a tábla metaadatait tárolja, valamint az Azure SQL Database-ben hivatkozott fájlra vagy mappára vonatkozó alapvető statisztikákat. Külső táblák létrehozásakor a rendszer nem helyez át vagy tárol tényleges adatokat az Azure SQL Database-ben.
Fontos
A legjobb teljesítmény érdekében, ha a külső adatforrás-illesztőprogram támogatja a háromrészes nevet, erősen ajánlott megadni a háromrészes nevet.
< > column_definition [ ,... n ]
CREATE EXTERNAL TABLE támogatja az oszlopnév, az adattípus, a nullhihetőség és a rendezés konfigurálását. Külső táblákon nem használható DEFAULT CONSTRAINT . Ezek az adattípusok nem támogatottak az Azure SQL Database külső tábláinak oszlopai esetében:
- földrajzi
- geometriai
- hierarchiaazonosító
- kép
- szöveg
- kontextus
- xml
- json
Az oszlopdefinícióknak, beleértve az adattípusokat és az oszlopok számát, meg kell egyeznie a külső fájlok adataival. Ha eltérés van, a fájlsorokat a rendszer elutasítja a tényleges adatok lekérdezésekor.
Horizontális külső táblabeállítások
Megadja a külső adatforrást (nem SQL Server-adatforrást) és a rugalmas lekérdezési
LOCATION = "folder_or_filepath"
Megadja az Azure Data Lake Gen2 vagy az Azure Blob Storage tényleges adatainak mappáit vagy fájlelérési útját és fájlnevét. A hely a gyökérmappából indul ki. A gyökérmappa a külső adatforrásban megadott adathely.
CREATE EXTERNAL TABLE nem hozza létre az elérési utat és a mappát.
Ha mappaként adja meg LOCATION , a külső táblából kiválasztott lekérdezések lekérik a fájlokat a mappából, de nem az összes almappájából.
A felügyelt Azure SQL-példány nem talál fájlokat almappákban vagy rejtett mappákban. Nem ad vissza olyan fájlokat sem, amelyeknek a neve aláhúzással (_) vagy ponttal (.) kezdődik.
Ha LOCATION='/webdata/', a következő képen egy lekérdezés mydata.txtsorait adja vissza. Nem adja vissza mydata2.txt, mert egy almappában van, nem adja vissza mydata3.txt, mert rejtett mappában van, és nem _hidden.txt, mert rejtett fájl.
ADAT_FORRÁS
DATA_SOURCE a külső adatok helyét tartalmazó külső adatforrás nevét adja meg. Külső adatforrás létrehozásához használja CREATE EXTERNAL DATA SOURCE (Transact-SQL). Például a rugalmas lekérdezésben DATA_SOURCE a szegmenstérkép, lásd : Külső táblák létrehozása.
FILE_FORMAT = external_file_format_name
Megadja annak a külső fájlformátum objektumnak a nevét, amely a külső adatok fájltípusát és tömörítési módját tárolja. Külső fájlformátum létrehozásához használja a CREATE EXTERNAL FILE FORMAT (Transact-SQL).
SCHEMA_NAME és OBJECT_NAME
Csak rugalmas lekérdezéssel használható.
A SCHEMA_NAME és OBJECT_NAME záradékok a külső tábladefiníciót egy másik sémában lévő táblára képezik le. Ha nincs megadva, a távoli objektum sémája feltételezve van dbo , és a rendszer feltételezi, hogy a neve megegyezik a definiált külső tábla nevével. Ez akkor hasznos, ha a távoli tábla neve már szerepel abban az adatbázisban, ahol létre szeretné hozni a külső táblát. Például egy külső táblát szeretne definiálni a katalógusnézetek vagy DMV-k összesített nézetének lekéréséhez a kibővített adatszinten. Mivel a katalógusnézetek és a DMV-k már léteznek helyileg, nem használhatja a nevüket a külső tábladefinícióhoz. Ehelyett használjon másik nevet, és használja a katalógusnézet vagy a DMV nevét a SCHEMA_NAME és/vagy OBJECT_NAME záradékokban. Példa: Külső táblák létrehozása.
ELOSZTÁS
Csak rugalmas lekérdezéssel használható.
Szabadon választható. Ez az argumentum csak a típusú SHARD_MAP_MANAGERadatbázisokhoz szükséges. Ez az argumentum azt szabályozza, hogy a rendszer egy táblát szilánkos vagy replikált táblaként kezeljen-e. A SHARDED (<column name>) táblákban a különböző táblák adatai nem fedik egymást.
REPLICATED azt határozza meg, hogy a táblák minden szegmensen ugyanazokat az adatokat tartalmazzák.
ROUND_ROBIN azt jelzi, hogy az adatok elosztásához egy alkalmazásspecifikus metódust használnak.
A DISTRIBUTION záradék a táblához használt adateloszlást határozza meg. A lekérdezésfeldolgozó a DISTRIBUTION záradékban megadott információkat használja a leghatékonyabb lekérdezési tervek létrehozásához.
-
SHARDEDazt jelenti, hogy az adatok horizontálisan particionálva lesznek az adatbázisok között. Az adatterjesztés particionálási kulcsa asharding_column_nameparaméter. -
REPLICATEDazt jelenti, hogy a tábla azonos példányai találhatók az egyes adatbázisokban. Az Ön felelőssége, hogy a replikák azonosak legyenek az adatbázisokban. -
ROUND_ROBINazt jelenti, hogy a tábla horizontálisan particionálva van egy alkalmazásfüggő terjesztési módszerrel.
Engedélyek
A külső táblához hozzáféréssel rendelkező felhasználók automatikusan hozzáférnek az alapul szolgáló távoli táblákhoz a külső adatforrás definíciójában megadott hitelesítő adatok alapján. Kerülje a jogosultságok nem kívánt megemelését a külső adatforrás hitelesítő adataival. Külső táblához ugyanúgy használja a GRANT vagy a REVOKE parancsot, mintha normál tábla lenne. Miután definiálta a külső adatforrást és a külső táblákat, mostantól teljes T-SQL-t használhat a külső táblákon.
CREATE EXTERNAL TABLE a következő felhasználói engedélyeket igényli:
- TÁBLA LÉTREHOZÁSA
- SÉMA MÓDOSÍTÁSA
- KÜLSŐ ADATFORRÁS MÓDOSÍTÁSA
- KÜLSŐ FÁJLFORMÁTUM MÓDOSÍTÁSA
- A CONTROL DATABASE-engedélyek csak a főkulcs, az adatbázis hatókörébe tartozó hitelesítő adatok és külső adatforrás létrehozásához szükségesek.
Vegye figyelembe, hogy a külső adatforrást létrehozó bejelentkezésnek engedéllyel kell rendelkeznie a Hadoopban vagy az Azure Blob Storage-ban található külső adatforrás olvasásához és írásához.
Fontos
Az ALTER ANY KÜLSŐ ADATFORRÁS engedély lehetővé teszi bármely egyszerű felhasználó számára, hogy külső adatforrás-objektumokat hozzon létre és módosítson, ezért lehetővé teszi az adatbázis hatókörébe tartozó összes hitelesítő adat elérését is az adatbázisban. Ezt az engedélyt kiemelt jogosultságúnak kell tekinteni, ezért csak megbízható rendszerbiztonsági tagoknak adható.
Zár
Megosztott zárolás a SCHEMARESOLUTION objektumon.
Megjegyzések
Alkalmi lekérdezési forgatókönyvekben, például SELECT FROM EXTERNAL TABLEa külső adatforrásból lekért sorok egy ideiglenes táblában vannak tárolva. A lekérdezés befejezése után a rendszer eltávolítja a sorokat, és törli az ideiglenes táblát. A rendszer nem tárol állandó adatokat SQL-táblákban.
Ezzel szemben az importálási forgatókönyvben( például a SELECT INTO FROM EXTERNAL TABLE) a külső adatforrásból lekért sorok állandó adatokként vannak tárolva az SQL-táblában. Az új tábla a külső adatok lekérésekor jön létre a lekérdezés végrehajtása során.
Az Azure SQL Database-sel való adatvirtualizálás jelenleg csak olvasható.
Számos olyan külső táblát hozhat létre, amelyek ugyanarra vagy különböző külső adatforrásokra hivatkoznak.
Táblázatszélesség korlátozásai
Az 1 MB-os sorszélesség-korlát egy érvényes sor tábladefiníció szerinti maximális méretén alapul. Ha az oszlopséma összege nagyobb, mint 1 MB, az adatvirtualizálási lekérdezések sikertelenek lesznek.
Hibakezelés
A CREATE EXTERNAL TABLE utasítás végrehajtása közben, ha a kapcsolódási kísérlet meghiúsul, az utasítás sikertelen lesz, és a külső tábla nem jön létre. Egy vagy több percig is eltarthat, amíg a parancs meghibásodik, mivel az SQL Database újrapróbálkozza a kapcsolatot, mielőtt végül meghiúsul a lekérdezés.
Korlátozások
Mivel egy külső tábla adatai nem az adatbázismotor vagy az Azure SQL Database közvetlen felügyelete alatt vannak, külső folyamattal bármikor módosíthatók vagy eltávolíthatók. Ennek eredményeképpen a külső táblák lekérdezési eredményei nem garantáltan determinisztikusak. Ugyanez a lekérdezés különböző eredményeket adhat vissza minden alkalommal, amikor egy külső táblán fut. Hasonlóképpen előfordulhat, hogy egy lekérdezés meghiúsul, ha a külső adatokat áthelyezik vagy eltávolítják.
Több külső táblát is létrehozhat, amelyek mindegyike különböző külső adatforrásokra hivatkozik.
Külső táblákban csak ezek az adatdefiníciós nyelvi (DDL-) utasítások engedélyezettek:
-
CREATE TABLEésDROP TABLE -
CREATE STATISTICSésDROP STATISTICS -
CREATE VIEWésDROP VIEW
A szerkezetek és műveletek nem támogatottak:
- A
DEFAULTkülső táblaoszlopokra vonatkozó korlátozás. - A törlés, beszúrás és frissítés adatmanipulációs nyelv (DML) műveletei.
Korlátozások rugalmas lekérdezéssel
Elkülönítés szemantikája: Az adatok külső táblán keresztüli elérése nem felel meg az SQL Server elkülönítési szemantikájának. Ez azt jelenti, hogy egy külső tábla lekérdezése nem jár zárolással vagy pillanatkép-elkülönítéssel. Ezért az adatvisszaszolgáltatás változhat, ha a külső adatforrás adatai módosulnak. Ugyanez a lekérdezés különböző eredményeket adhat vissza minden alkalommal, amikor egy külső táblán fut. Hasonlóképpen előfordulhat, hogy egy lekérdezés meghiúsul, ha a külső adatokat áthelyezik vagy eltávolítják.
Szerkezetek és műveletek nem támogatottak:
- A
DEFAULTkülső táblaoszlopokra vonatkozó korlátozás. - A törlés, beszúrás és frissítés adatmanipulációs nyelv (DML) műveletei.
- Dinamikus adatmaszkolás külső táblaoszlopokon.
- A kurzorok nem támogatottak külső táblákhoz az Azure SQL Database-ben.
- A
Csak a konstans predikátumok: Csak a lekérdezésben definiált konstans predikátumok küldhetők le a külső adatforrásba. Ez ellentétben áll a csatolt kiszolgálókkal, és a lekérdezés végrehajtása során meghatározott predikátumokhoz való hozzáféréshez, vagyis ha beágyazott hurokkal használják a lekérdezéstervben. Ez gyakran a teljes külső táblázat helyi másolásához, majd csatlakoztatásához vezet.
Az alábbi példában, ha
External.Ordersegy külső tábla, ésCustomeregy helyi tábla, a lekérdezés a teljes külső táblát helyileg másolja, mert a szükséges predikátum fordításkor nem ismert.SELECT Orders.OrderId, Orders.OrderTotal FROM External.Orders WHERE CustomerId IN ( SELECT TOP 1 CustomerId FROM Customer WHERE CustomerName = 'MyCompany' );Nincs párhuzamosság: A külső táblák használata megakadályozza a párhuzamosság használatát a lekérdezési tervben.
Távoli lekérdezésként: A külső táblák távoli lekérdezésként vannak implementálva, így a visszaadott sorok becsült száma általában 1000. A külső tábla szűréséhez használt predikátum típusán alapuló egyéb szabályok is léteznek. Ezek szabályokon alapuló becslések, nem pedig a külső tábla tényleges adatain alapuló becslések. Az optimalizáló nem fér hozzá a távoli adatforráshoz, hogy pontosabb becslést kapjon.
Nem támogatott a privát végpont: A külső táblalekérdezések nem támogatottak, ha a távoli táblához való csatlakozás privát végpont.
Adattípus korlátozásai
A következő adattípusok nem használhatók külső táblákban:
- földrajzi
- geometriai
- hierarchiaazonosító
- kép
- szöveg
- kontextus
- xml
- Bármely felhasználó által definiált típus
Példák
További példákért tekintse meg a CREATE EXTERNAL DATA SOURCE (Transact-SQL) című témakört , vagy tekintse meg az Azure SQL Database-beli adatvirtualizálást.
Egy. Külső tábla létrehozása rugalmas lekérdezéshez
CREATE EXTERNAL TABLE [dbo].[CustomerInformation]
( [CustomerID] [int] NOT NULL,
[CustomerName] [varchar](50) NOT NULL,
[Company] [varchar](50) NOT NULL)
WITH
( DATA_SOURCE = MyElasticDBQueryDataSrc)
B. Külső tábla létrehozása szegmenses adatforráshoz
Ez a példa egy távoli DMV-t a SCHEMA_NAME és OBJECT_NAME záradékok használatával újraképz egy külső táblába.
CREATE EXTERNAL TABLE [dbo].[all_dm_exec_requests]([session_id] smallint NOT NULL,
[request_id] int NOT NULL,
[start_time] datetime NOT NULL,
[status] nvarchar(30) NOT NULL,
[command] nvarchar(32) NOT NULL,
[sql_handle] varbinary(64),
[statement_start_offset] int,
[statement_end_offset] int,
[cpu_time] int NOT NULL)
WITH
(
DATA_SOURCE = MyExtSrc,
SCHEMA_NAME = 'sys',
OBJECT_NAME = 'dm_exec_requests',
DISTRIBUTION=ROUND_ROBIN
);
C. Külső adatok lekérdezése az Azure SQL Database-ből külső táblával
Ha adatbázis-hatókörű hitelesítő adatokat szeretne létrehozni az Azure SQL Database-ben, először létre kell hoznia az adatbázis főkulcsát, ha még nem létezik. Az adatbázis főkulcsára akkor van szükség, ha a hitelesítő adatok megkövetelik
SECRET.-- Create MASTER KEY if it doesn't exist in the database: CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Some Very Strong Password Here>' GOHozza létre az adatbázis hatókörébe tartozó hitelesítő adatokat EGY SAS-jogkivonat használatával. Felügyelt identitást is használhat.
CREATE DATABASE SCOPED CREDENTIAL MyCredential WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<KEY>' ; --Removing leading '?' GOHozza létre a külső adatforrást a hitelesítő adatok használatával.
--Create external data source pointing to the file path, and referencing database-scoped credential: CREATE EXTERNAL DATA SOURCE MyPrivateExternalDataSource WITH ( LOCATION = 'abs://public@pandemicdatalake.blob.core.windows.net/curated/covid-19/bing_covid-19_data/latest' CREDENTIAL = [MyCredential] ) GOHozzon létre egy KÜLSŐ FÁJLFORMÁTUMOT és egy KÜLSŐ TÁBLÁt, hogy úgy kérdezhesse le az adatokat, mintha helyi tábla lenne.
-- Or, create an EXTERNAL FILE FORMAT and an EXTERNAL TABLE --Create external file format CREATE EXTERNAL FILE FORMAT DemoFileFormat WITH ( FORMAT_TYPE=PARQUET ) GO --Create external table: CREATE EXTERNAL TABLE tbl_TaxiRides( vendorID VARCHAR(100) COLLATE Latin1_General_BIN2, tpepPickupDateTime DATETIME2, tpepDropoffDateTime DATETIME2, passengerCount INT, tripDistance FLOAT, puLocationId VARCHAR(8000), doLocationId VARCHAR(8000), startLon FLOAT, startLat FLOAT, endLon FLOAT, endLat FLOAT, rateCodeId SMALLINT, storeAndFwdFlag VARCHAR(8000), paymentType VARCHAR(8000), fareAmount FLOAT, extra FLOAT, mtaTax FLOAT, improvementSurcharge VARCHAR(8000), tipAmount FLOAT, tollsAmount FLOAT, totalAmount FLOAT ) WITH ( LOCATION = 'yellow/puYear=*/puMonth=*/*.parquet', DATA_SOURCE = NYCTaxiExternalDataSource, FILE_FORMAT = MyFileFormat ); GO --Then, query the data via an external table with T-SQL: SELECT TOP 10 * FROM tbl_TaxiRides; GO
Kapcsolódó tartalom
* Azure Synapse
Elemzés *
Áttekintés: Azure Synapse Analytics
Külső táblázat használata:
- A dedikált SQL-készletek adatokat kérdezhetnek le, importálhatnak és tárolhatnak a Hadoopból, az Azure Blob Storage-ból, valamint az Azure Data Lake Storage Gen1-ből és Gen2-ből.
- A kiszolgáló nélküli SQL-készletek adatokat kérdezhetnek le, importálhatnak és tárolhatnak az Azure Blob Storage-ból, az Azure Data Lake Storage Gen1-ből és Gen2-ből. A kiszolgáló nélküli szolgáltatás nem támogatja a
TYPE=Hadoop.
Lásd még: CREATE EXTERNAL DATA SOURCE (Transact-SQL) és DROP EXTERNAL TABLE (Transact-SQL).
A külső táblák Azure Synapse-nal való használatával kapcsolatos további útmutatásért és példákért lásd: Külső táblák használata a Synapse SQL-.
Szintaxis
- dedikált SQL-készlet
- kiszolgáló nélküli SQL-készlet
CREATE EXTERNAL TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
( <column_definition> [ ,...n ] )
WITH (
LOCATION = 'hdfs_folder_or_filepath',
DATA_SOURCE = external_data_source_name,
FILE_FORMAT = external_file_format_name
[ , <reject_options> [ ,...n ] ]
)
[;]
<column_definition> ::=
column_name <data_type>
[ COLLATE collation_name ]
[ NULL | NOT NULL ]
<reject_options> ::=
{
| REJECT_TYPE = value | percentage,
| REJECT_VALUE = reject_value,
| REJECT_SAMPLE_VALUE = reject_sample_value,
| REJECTED_ROW_LOCATION = '/REJECT_Directory'
}
Érvek
{ database_name.schema_name.table_name | schema_name.table_name | table_name}
A létrehozandó tábla egy-háromrészes neve.
Külső tábla esetén csak a tábla metaadatai és az Azure Data Lake, Hadoop vagy Azure Blob Storage szolgáltatásban hivatkozott fájl vagy mappa alapszintű statisztikái. Külső táblák létrehozásakor a rendszer nem helyez át vagy tárol tényleges adatokat.
Fontos
A legjobb teljesítmény érdekében, ha a külső adatforrás-illesztőprogram támogatja a háromrészes nevet, erősen ajánlott megadni a háromrészes nevet.
< > column_definition [ ,... n ]
A CREATE EXTERNAL TABLE támogatja az oszlopok nevének, adattípusának, nullbilitásának és rendezésének konfigurálását. Külső táblák alapértelmezett KORLÁTOZÁSát nem használhatja.
Jegyzet
A szöveges, ntextés xml nem támogatott adattípusok a Synapse Analytics külső tábláinak oszlopaihoz.
- A tagolt fájlok olvasásakor az oszlopdefinícióknak, beleértve az adattípusokat és az oszlopok számát, meg kell egyeznie a külső fájlok adataival. Ha eltérés van, a fájlsorokat a rendszer elutasítja a tényleges adatok lekérdezésekor.
- Parquet-fájlokból való olvasáskor csak az olvasni kívánt oszlopokat adhatja meg, a többit pedig kihagyhatja.
LOCATION = "folder_or_filepath"
Megadja az Azure Data Lake, a Hadoop vagy az Azure Blob Storage tényleges adataihoz tartozó mappát vagy fájl elérési útját és fájlnevét. A hely a gyökérmappából indul ki. A gyökérmappa a külső adatforrásban megadott adathely. A CREATE EXTERNAL TABLE AS SELECT (CETAS) (Transact-SQL) utasítás létrehozza az elérési utat és a mappát, ha nem létezik.
CREATE EXTERNAL TABLE nem hozza létre az elérési utat és a mappát.
Ha a LOCATION billentyűt mappaként adja meg, a külső táblából kiválasztott PolyBase-lekérdezések lekérik a fájlokat a mappából és annak összes almappájából. A Hadoophoz hasonlóan a PolyBase sem ad vissza rejtett mappákat. Nem ad vissza olyan fájlokat sem, amelyeknek a neve aláhúzással (_) vagy ponttal (.) kezdődik.
A következő képen látható példában, ha LOCATION='/webdata/', egy PolyBase-lekérdezés mydata.txt és mydata2.txtsorait adja vissza. Nem adja vissza mydata3.txt, mert egy rejtett mappa almappájában található. És nem adja vissza _hidden.txt, mert rejtett fájl.
A Hadoop külső tábláitól eltérően a natív külső táblák csak akkor adnak vissza almappákat, ha az elérési út végén /** ad meg. Ebben a példában, ha LOCATION='/webdata/'kiszolgáló nélküli SQL-készlet lekérdezés, akkor sorokat ad vissza mydata.txt. Nem adja vissza mydata2.txt és mydata3.txt, mert egy almappában találhatók. A Hadoop-táblák az almappákban lévő összes fájlt visszaadják.
A Hadoop és a natív külső táblák is kihagyják az aláhúzással (_) vagy ponttal (.) kezdődő neveket tartalmazó fájlokat.
DATA_SOURCE = external_data_source_name
Megadja annak a külső adatforrásnak a nevét, amely a külső adatok helyét tartalmazza. Ez a hely az Azure Data Lake-ben található. Külső adatforrás létrehozásához használja CREATE EXTERNAL DATA SOURCE (Transact-SQL).
FILE_FORMAT = external_file_format_name
Megadja annak a külső fájlformátum objektumnak a nevét, amely a külső adatok fájltípusát és tömörítési módját tárolja. Külső fájlformátum létrehozásához használja a CREATE EXTERNAL FILE FORMAT (Transact-SQL).
Táblázat opciók
Megadja az alapul szolgáló fájlok olvasását leíró beállításokat. Jelenleg az egyetlen elérhető lehetőség az {"READ_OPTIONS":["ALLOW_INCONSISTENT_READS"]}, amely arra utasítja a külső táblát, hogy hagyja figyelmen kívül a mögöttes fájlokon végrehajtott frissítéseket, még akkor is, ha ez inkonzisztens olvasási műveleteket okozhat. Ezt a beállítást csak olyan speciális esetekben használja, ahol gyakran fűzött fájlokat. Ez a beállítás kiszolgáló nélküli SQL-készletben érhető el CSV formátumban.
ELUTASÍTÁSi beállítások
Az elutasítási lehetőségek előzetes verzióban érhetők el a kiszolgáló nélküli SQL-készletekhez az Azure Synapse Analyticsben.
Ez a beállítás csak olyan külső adatforrások esetén használható, ahol TÍPUS = HADOOP.
Megadhatja az elutasítási paramétereket, amelyek meghatározzák, hogy a PolyBase hogyan fogja kezelni a külső adatforrásból lekért piszkos rekordokat. Az adatrekordok akkor minősülnek "piszkosnak", ha a tényleges adattípusok vagy az oszlopok száma nem egyezik a külső tábla oszlopdefinícióival.
Ha nem ad meg vagy módosít elutasító értékeket, a PolyBase alapértelmezett értékeket használ. Az elutasítási paraméterekkel kapcsolatos információk további metaadatokként lesznek tárolva, amikor külső táblát hoz létre a CREATE EXTERNAL TABLE utasítással. Ha egy jövőbeli SELECT utasítás vagy a SELECT INTO SELECT utasítás kiválasztja a külső táblából származó adatokat, a PolyBase az elutasítási beállításokkal határozza meg azoknak a soroknak a számát vagy százalékát, amelyeket a tényleges lekérdezés meghiúsulása előtt el lehet utasítani. A lekérdezés (részleges) eredményeket ad vissza az elutasítási küszöbérték túllépéséig. Ezután a megfelelő hibaüzenettel meghiúsul.
A PARSER_VERSION formátumbeállítás csak kiszolgáló nélküli SQL-készletekben támogatott.
REJECT_TYPE = érték | százalék
Tisztázza, hogy a REJECT_VALUE beállítás konstans értékként vagy százalékként van-e megadva.
érték
REJECT_VALUE egy literális érték, nem százalék. A PolyBase-lekérdezés sikertelen lesz, ha az elutasított sorok száma meghaladja a reject_value.
A lekérdezés sikertelen lesz, ha az elutasított sorok száma meghaladja a reject_value. Ha és REJECT_VALUE = 5REJECT_TYPE = valuepéldául a PolyBase-lekérdezés SELECT öt sor elutasítása után meghiúsul.
százalékos
REJECT_VALUE százalékos érték, nem pedig literális érték. A PolyBase-lekérdezések sikertelenek lesznek, ha a sikertelen sorok
- A
REJECT_TYPE = valuereject_value 0 és 2 147 483 647 közötti egész számnak kell lennie. - A
REJECT_TYPE = percentagereject_value 0 és 100 közötti lebegőpontosnak kell lennie. A százalékérték csak azokra a dedikált SQL-készletekre érvényes, aholTYPE = HADOOP.
REJECT_SAMPLE_VALUE = reject_sample_value
Ez az attribútum megadása kötelező.REJECT_TYPE = percentage Meghatározza, hogy hány sort kíséreljen meg lekérni, mielőtt a PolyBase újraszámítja az elutasított sorok százalékos arányát.
A reject_sample_value paraméternek 0 és 2 147 483 647 közötti egész számnak kell lennie.
Ha például REJECT_SAMPLE_VALUE = 1000a PolyBase kiszámítja a sikertelen sorok százalékos arányát, miután 1000 sort próbált importálni a külső adatfájlból. Ha a sikertelen sorok százalékos aránya kisebb, mint reject_value, a PolyBase további 1000 sort kísérel meg lekérni. A sikertelen sorok százalékos arányát továbbra is újraszámolja, miután minden további 1000 sort megpróbál importálni.
Jegyzet
Mivel a PolyBase időközönként kiszámítja a sikertelen sorok százalékos arányát, a sikertelen sorok tényleges százalékos aránya meghaladhatja reject_value.
Példa:
Ez a példa bemutatja, hogyan működik együtt a három REJECT beállítás. Például, ha REJECT_TYPE = percentage, REJECT_VALUE = 30és REJECT_SAMPLE_VALUE = 100, a következő forgatókönyv fordulhat elő:
- A PolyBase megpróbálja lekérni az első 100 sort; 25 sikertelen és 75 sikeres.
- A sikertelen sorok százalékos értéke 25%lesz, ami kisebb, mint a 30%elvetésének értéke. Ennek eredményeként a PolyBase továbbra is beolvassa az adatokat a külső adatforrásból.
- A PolyBase megkísérli betölteni a következő 100 sort; ezúttal 25 sor sikeres és 75 sor meghiúsul.
- A sikertelen sorok százalékos aránya 50%lesz újraszámolva. A sikertelen sorok százalékos aránya túllépte a 30% elutasítási értéket.
- A PolyBase-lekérdezés 50% elutasított sortal meghiúsul, miután megkísérelte visszaadni az első 200 sort. Egyező sorokat ad vissza a rendszer, mielőtt a PolyBase-lekérdezés észleli az elutasítási küszöbérték túllépésének észlelését.
REJECTED_ROW_LOCATION = címtárhely
Megadja a külső adatforrás azon könyvtárát, amelybe az elutasított sorokat és a megfelelő hibafájlt meg kell írni.
Ha a megadott elérési út nem létezik, létrejön. A rendszer létrehoz egy gyermekkönyvtárat _rejectedrowsnéven. A _ karakter biztosítja, hogy a könyvtár más adatfeldolgozás céljából ne legyen elérhető, kivéve, ha a helyparaméter kifejezetten el van nevezve.
- A kiszolgáló nélküli SQL-készletekben az elérési út
YearMonthDay_HourMinuteSecond_StatementID. AstatementIDhasználatával korrelálhatja a mappát az azt létrehozó lekérdezéssel. - Dedikált SQL-készletekben a létrehozott elérési út a
YearMonthDay -HourMinuteSecondformátumban történő betöltés időpontján alapul, például20180330-173205.
Ebben a mappában kétféle fájltípus van megírva, a _reason fájl és az adatfájl.
További információ: KÜLSŐ ADATFORRÁS LÉTREHOZÁSA.
Annak oka, hogy a fájlok és az adatfájlok is a CTAS utasításhoz társított lekérdezésazonosítóval rendelkeznek. Mivel az adatok és az ok külön fájlokban találhatók, a megfelelő fájloknak egyező utótagjuk van.
A kiszolgáló nélküli SQL-készletekben a error.json fájl egy JSON-tömböt tartalmaz, amely az elutasított sorokkal kapcsolatos hibákat észlelt. A hibát képviselő minden elem a következő attribútumokat tartalmazza:
| Attribútum | Leírás |
|---|---|
Error |
A sor elutasításának oka. |
Row |
Elutasított sor sorszáma a fájlban. |
Column |
Elutasított oszlop sorszáma. |
Value |
Elutasított oszlopérték. Ha az érték nagyobb 100 karakternél, csak az első 100 karakter jelenik meg. |
File |
A sorhoz tartozó fájl elérési útja. |
Engedélyek
A következő felhasználói engedélyek szükségesek:
- TÁBLA LÉTREHOZÁSA
- SÉMA MÓDOSÍTÁSA
- KÜLSŐ ADATFORRÁS MÓDOSÍTÁSA
- KÜLSŐ FÁJLFORMÁTUM MÓDOSÍTÁSA
- A CONTROL DATABASE-engedélyek csak a főkulcs, az adatbázis hatókörébe tartozó hitelesítő adatok és külső adatforrás létrehozásához szükségesek.
Vegye figyelembe, hogy a külső adatforrást létrehozó bejelentkezésnek engedéllyel kell rendelkeznie a Hadoopban vagy az Azure Blob Storage-ban található külső adatforrás olvasásához és írásához.
Fontos
Az ALTER ANY KÜLSŐ ADATFORRÁS engedély lehetővé teszi bármely egyszerű felhasználó számára, hogy külső adatforrás-objektumokat hozzon létre és módosítson, ezért lehetővé teszi az adatbázis hatókörébe tartozó összes hitelesítő adat elérését is az adatbázisban. Ezt az engedélyt kiemelt jogosultságúnak kell tekinteni, ezért csak megbízható rendszerbiztonsági tagoknak adható.
Hibakezelés
A CREATE EXTERNAL TABLE utasítás végrehajtása során a PolyBase megpróbál csatlakozni a külső adatforráshoz. Ha a kapcsolódási kísérlet meghiúsul, az utasítás meghiúsul, és a külső tábla nem jön létre. Egy vagy több percig is eltarthat, amíg a parancs meghibásodik, mivel a PolyBase újrapróbálkozza a kapcsolatot, mielőtt végül meghiúsul a lekérdezés.
Megjegyzések
Alkalmi lekérdezési forgatókönyvekben, például SELECT FROM EXTERNAL TABLEa PolyBase egy ideiglenes táblában tárolja a külső adatforrásból lekért sorokat. A lekérdezés befejezése után a PolyBase eltávolítja és törli az ideiglenes táblát. A rendszer nem tárol állandó adatokat SQL-táblákban.
Ezzel szemben az importálási forgatókönyvben( például a SELECT INTO FROM EXTERNAL TABLE) a PolyBase a külső adatforrásból lekért sorokat állandó adatként tárolja az SQL-táblában. Az új tábla a lekérdezés végrehajtása során jön létre, amikor a PolyBase lekéri a külső adatokat.
A PolyBase a lekérdezési számítások egy részét leküldi a Hadoopba a lekérdezési teljesítmény javítása érdekében. Ezt a műveletet predikátum leküldéses leküldésnek nevezzük. Ennek engedélyezéséhez adja meg a Hadoop erőforrás-kezelő helybeállítását KÜLSŐ ADATFORRÁS LÉTREHOZÁSA.
Számos olyan külső táblát hozhat létre, amelyek ugyanarra vagy különböző külső adatforrásokra hivatkoznak.
Az Azure Synapse Analytics kiszolgáló nélküli és dedikált SQL-készletei különböző kódbázisokat használnak az adatvirtualizáláshoz. A kiszolgáló nélküli SQL-készletek támogatják a natív adatvirtualizálási technológiát. A dedikált SQL-készletek támogatják a natív és a PolyBase-adatvirtualizálást is. A PolyBase-adatvirtualizálás akkor használatos, ha a KÜLSŐ ADATFORRÁS TYPE=HADOOPjön létre.
Korlátozások
Mivel egy külső tábla adatai nem az Azure Synapse közvetlen felügyelete alatt vannak, külső folyamattal bármikor módosíthatja vagy eltávolíthatja őket. Ennek eredményeképpen a külső táblák lekérdezési eredményei nem garantáltan determinisztikusak. Ugyanez a lekérdezés különböző eredményeket adhat vissza minden alkalommal, amikor egy külső táblán fut. Hasonlóképpen előfordulhat, hogy egy lekérdezés meghiúsul, ha a külső adatokat áthelyezik vagy eltávolítják.
A külső táblák nem támogatják az UTF-8 rendezésű forrásadatokat. Ha a forrásadatok UTF-8 rendezést használnak, a CREATE EXTERNAL TABLE utasítás minden UTF-8 oszlopához explicit módon hozzá kell rendelnie egy nem UTF-8 rendezést. Ennek elmulasztása az alábbi kimenethez hasonló hibaüzenetet eredményez:
Msg 105105, Level 16, State 1, Line 22
105105;No column collation was specified in external table definition and the collation of current database 'Latin1_General_100_CI_AS_SC_UTF8' is not supported for external tables of type 'HADOOP'. Please specify a supported collation in the column definition.
Ha a külső tábla adatbázis-rendezése UTF-8, a tábla létrehozása meghiúsul, kivéve, ha minden oszlop kifejezetten nem UTF-8 rendezéssel van definiálva (például [UTF8_column] VARCHAR(128) COLLATE LATIN1_GENERAL_100_CI_AS_KS_WS NOT NULL).
Több külső táblát is létrehozhat, amelyek mindegyike különböző külső adatforrásokra hivatkozik.
Külső táblákban csak ezek az adatdefiníciós nyelvi (DDL-) utasítások engedélyezettek:
-
CREATE TABLEésDROP TABLE -
CREATE STATISTICSésDROP STATISTICS -
CREATE VIEWésDROP VIEW
A szerkezetek és műveletek nem támogatottak:
- Külső
DEFAULTtáblaoszlopokra vonatkozó korlátozás - Adatmanipulációs nyelv (DML) a törlési, beszúrási és frissítési műveletekhez
- Dinamikus adatmaszkolás külső táblaoszlopokon
Lekérdezési korlátozások
Javasoljuk, hogy mappánként ne haladja meg a 30 ezernél több fájlt. Ha túl sok fájlra hivatkozik, előfordulhat, hogy egy Java virtuális gép (JVM) memóriakivételen kívül esik, vagy a teljesítmény csökkenhet.
Táblázatszélesség korlátozásai
Az Azure Data Warehouse PolyBase sorszélesség-korlátja 1 MB egy érvényes sor tábladefiníciónkénti maximális mérete alapján. Ha az oszlopséma összege nagyobb, mint 1 MB, a PolyBase nem tudja lekérdezni az adatokat.
Adattípus korlátozásai
A következő adattípusok nem használhatók a PolyBase külső tábláiban:
- földrajzi
- geometriai
- hierarchiaazonosító
- kép
- szöveg
- kontextus
- xml
- Bármely felhasználó által definiált típus
Zár
Megosztott zárolás a SCHEMARESOLUTION objektumon.
Példák
Egy. Adatok importálása az ADLS Gen 2-ből az Azure Synapse Analyticsbe
Az 1. generációs ADLS Gen példáiért lásd: Külső adatforrás létrehozása.
-- These values come from your Azure Active Directory Application used to authenticate to ADLS Gen 2.
CREATE DATABASE SCOPED CREDENTIAL ADLUser
WITH IDENTITY = '<clientID>@\<OAuth2.0TokenEndPoint>',
SECRET = '<KEY>' ;
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH (TYPE = HADOOP,
LOCATION = 'abfss://data@pbasetr.azuredatalakestore.net'
);
CREATE EXTERNAL FILE FORMAT TextFileFormat
WITH
(
FORMAT_TYPE = DELIMITEDTEXT
, FORMAT_OPTIONS ( FIELD_TERMINATOR = '|'
, STRING_DELIMITER = ''
, DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.fff'
, USE_TYPE_DEFAULT = FALSE
)
);
CREATE EXTERNAL TABLE [dbo].[DimProduct_external]
( [ProductKey] [int] NOT NULL,
[ProductLabel] nvarchar NULL,
[ProductName] nvarchar NULL )
WITH
(
LOCATION='/DimProduct/' ,
DATA_SOURCE = AzureDataLakeStore ,
FILE_FORMAT = TextFileFormat ,
REJECT_TYPE = VALUE ,
REJECT_VALUE = 0
);
CREATE TABLE [dbo].[DimProduct]
WITH (DISTRIBUTION = HASH([ProductKey] ) )
AS SELECT * FROM
[dbo].[DimProduct_external] ;
B. Adatok importálása Parquetből az Azure Synapse Analyticsbe
Az alábbi példa egy külső táblát hoz létre. Ezután az első sort adja vissza:
CREATE EXTERNAL TABLE census_external_table
(
decennialTime varchar(20),
stateName varchar(100),
countyName varchar(100),
population int,
race varchar(50),
sex varchar(10),
minAge int,
maxAge int
)
WITH (
LOCATION = '/parquet/',
DATA_SOURCE = population_ds,
FILE_FORMAT = census_file_format
);
GO
SELECT TOP 1 * FROM census_external_table;
Kapcsolódó tartalom
* Elemzés
Platformrendszer (PDW) *
Áttekintés: Elemzési platformrendszer
Külső táblázat használata:
- Hadoop- vagy Azure Blob Storage-adatok lekérdezése Transact-SQL utasításokkal.
- Adatok importálása és tárolása a Hadoopból vagy az Azure Blob Storage-ból az Analytics platformrendszerbe.
Lásd még: CREATE EXTERNAL DATA SOURCE (Transact-SQL) és DROP EXTERNAL TABLE (Transact-SQL).
Szintaxis
CREATE EXTERNAL TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
( <column_definition> [ ,...n ] )
WITH (
LOCATION = 'hdfs_folder_or_filepath',
DATA_SOURCE = external_data_source_name,
FILE_FORMAT = external_file_format_name
[ , <reject_options> [ ,...n ] ]
)
[;]
<column_definition> ::=
column_name <data_type>
[ COLLATE collation_name ]
[ NULL | NOT NULL ]
<reject_options> ::=
{
| REJECT_TYPE = value | percentage,
| REJECT_VALUE = reject_value,
| REJECT_SAMPLE_VALUE = reject_sample_value,
}
Érvek
{ database_name.schema_name.table_name | schema_name.table_name | table_name}
A létrehozandó tábla egy-háromrészes neve.
Külső táblák esetében az Analytics Platform System csak a tábla metaadatait tárolja, valamint a Hadoopban vagy az Azure Blob Storage-ban hivatkozott fájlra vagy mappára vonatkozó alapvető statisztikákat. A rendszer nem helyez át vagy tárol tényleges adatokat az Analytics platformrendszerben.
Fontos
A legjobb teljesítmény érdekében, ha a külső adatforrás-illesztőprogram támogatja a háromrészes nevet, erősen ajánlott megadni a háromrészes nevet.
< > column_definition [ ,... n ]
A CREATE EXTERNAL TABLE támogatja az oszlopok nevének, adattípusának, nullbilitásának és rendezésének konfigurálását. Külső táblák alapértelmezett KORLÁTOZÁSát nem használhatja.
Az oszlopdefinícióknak, beleértve az adattípusokat és az oszlopok számát, meg kell egyeznie a külső fájlok adataival. Ha eltérés van, a fájlsorokat a rendszer elutasítja a tényleges adatok lekérdezésekor.
LOCATION = "folder_or_filepath"
Megadja a Hadoopban vagy az Azure Blob Storage-ban tárolt tényleges adatok mappáit vagy fájlelérési útját és fájlnevét. A hely a gyökérmappából indul ki. A gyökérmappa a külső adatforrásban megadott adathely.
Az Analytics platformrendszerben a CREATE EXTERNAL TABLE AS SELECT (CETAS) (Transact-SQL) utasítás létrehozza az elérési utat és a mappát, ha az nem létezik.
CREATE EXTERNAL TABLE nem hozza létre az elérési utat és a mappát.
Ha a LOCATION billentyűt mappaként adja meg, a külső táblából kiválasztott PolyBase-lekérdezések lekérik a fájlokat a mappából és annak összes almappájából. A Hadoophoz hasonlóan a PolyBase sem ad vissza rejtett mappákat. Nem ad vissza olyan fájlokat sem, amelyeknek a neve aláhúzással (_) vagy ponttal (.) kezdődik.
A következő képen látható példában, ha LOCATION='/webdata/', egy PolyBase-lekérdezés mydata.txt és mydata2.txtsorait adja vissza. Nem adja vissza mydata3.txt, mert egy rejtett mappa almappájában található. És nem adja vissza _hidden.txt, mert rejtett fájl.
Az alapértelmezett és csak a gyökérmappából való olvasás módosításához állítsa a <polybase.recursive.traversal> attribútumot "false" értékre a core-site.xml konfigurációs fájlban. Ez a fájl az SQL Server <SqlBinRoot>\PolyBase\Hadoop\Conf\ gyökerének bin alatt található. Például C:\Program Files\Microsoft SQL Server\MSSQL13.XD14\MSSQL\Binn\.
DATA_SOURCE = external_data_source_name
Megadja annak a külső adatforrásnak a nevét, amely a külső adatok helyét tartalmazza. Ez a hely vagy Hadoop vagy Azure Blob Storage. Külső adatforrás létrehozásához használja CREATE EXTERNAL DATA SOURCE (Transact-SQL).
FILE_FORMAT = external_file_format_name
Megadja annak a külső fájlformátum objektumnak a nevét, amely a külső adatok fájltípusát és tömörítési módját tárolja. Külső fájlformátum létrehozásához használja a CREATE EXTERNAL FILE FORMAT (Transact-SQL).
Elutasítási beállítások
Ez a beállítás csak olyan külső adatforrások esetén használható, ahol TÍPUS = HADOOP.
Megadhatja az elutasítási paramétereket, amelyek meghatározzák, hogy a PolyBase hogyan fogja kezelni a külső adatforrásból lekért piszkos rekordokat. Az adatrekordok akkor minősülnek "piszkosnak", ha a tényleges adattípusok vagy az oszlopok száma nem egyezik a külső tábla oszlopdefinícióival.
Ha nem ad meg vagy módosít elutasító értékeket, a PolyBase alapértelmezett értékeket használ. Az elutasítási paraméterekkel kapcsolatos információk további metaadatokként lesznek tárolva, amikor külső táblát hoz létre a CREATE EXTERNAL TABLE utasítással. Ha egy jövőbeli SELECT utasítás vagy a SELECT INTO SELECT utasítás kiválasztja a külső táblából származó adatokat, a PolyBase az elutasítási beállításokkal határozza meg azoknak a soroknak a számát vagy százalékát, amelyeket a tényleges lekérdezés meghiúsulása előtt el lehet utasítani. A lekérdezés (részleges) eredményeket ad vissza az elutasítási küszöbérték túllépéséig. Ezután a megfelelő hibaüzenettel meghiúsul.
REJECT_TYPE = érték | százalék
Tisztázza, hogy a REJECT_VALUE beállítás konstans értékként vagy százalékként van-e megadva.
érték
REJECT_VALUE egy literálérték, nem százalék. A PolyBase-lekérdezés sikertelen lesz, ha az elutasított sorok száma meghaladja a reject_value.
Ha például REJECT_VALUE = 5 és REJECT_TYPE = érték, a PolyBase SELECT lekérdezés öt sor elutasítása után meghiúsul.
százalékos
REJECT_VALUE százalékos érték, nem pedig literális érték. A PolyBase-lekérdezések sikertelenek lesznek, ha a sikertelen sorok
REJECT_VALUE = reject_value
Megadja a lekérdezés sikertelensége előtt elutasítható sorok értékét vagy százalékos arányát.
REJECT_TYPE = érték esetén reject_value 0 és 2 147 483 647 közötti egész számnak kell lennie.
REJECT_TYPE = százalékérték esetén reject_value 0 és 100 közötti lebegőpontosnak kell lennie.
REJECT_SAMPLE_VALUE = reject_sample_value
Ez az attribútum REJECT_TYPE = százalékos érték megadásakor szükséges. Meghatározza, hogy hány sort kíséreljen meg lekérni, mielőtt a PolyBase újraszámítja az elutasított sorok százalékos arányát.
A reject_sample_value paraméternek 0 és 2 147 483 647 közötti egész számnak kell lennie.
Ha például REJECT_SAMPLE_VALUE = 1000, a PolyBase kiszámítja a sikertelen sorok százalékos arányát, miután 1000 sort próbált importálni a külső adatfájlból. Ha a sikertelen sorok százalékos aránya kisebb, mint reject_value, a PolyBase további 1000 sort kísérel meg lekérni. A sikertelen sorok százalékos arányát továbbra is újraszámolja, miután minden további 1000 sort megpróbál importálni.
Jegyzet
Mivel a PolyBase időközönként kiszámítja a sikertelen sorok százalékos arányát, a sikertelen sorok tényleges százalékos aránya meghaladhatja reject_value.
Példa:
Ez a példa bemutatja, hogyan működik együtt a három REJECT beállítás. Ha például REJECT_TYPE = százalék, REJECT_VALUE = 30 és REJECT_SAMPLE_VALUE = 100, a következő forgatókönyv fordulhat elő:
- A PolyBase megpróbálja lekérni az első 100 sort; 25 sikertelen és 75 sikeres.
- A sikertelen sorok százalékos értéke 25%lesz, ami kisebb, mint a 30%elvetésének értéke. Ennek eredményeképpen a PolyBase továbbra is beolvassa az adatokat a külső adatforrásból.
- A PolyBase megkísérli betölteni a következő 100 sort; ezúttal 25 sor sikeres és 75 sor meghiúsul.
- A sikertelen sorok százalékos aránya 50%lesz újraszámolva. A sikertelen sorok százalékos aránya túllépte a 30% elutasítási értéket.
- A PolyBase-lekérdezés 50% elutasított sortal meghiúsul, miután megkísérelte visszaadni az első 200 sort. Egyező sorokat ad vissza a rendszer, mielőtt a PolyBase-lekérdezés észleli az elutasítási küszöbérték túllépésének észlelését.
Engedélyek
A következő felhasználói engedélyek szükségesek:
- TÁBLA LÉTREHOZÁSA
- SÉMA MÓDOSÍTÁSA
- KÜLSŐ ADATFORRÁS MÓDOSÍTÁSA
- KÜLSŐ FÁJLFORMÁTUM MÓDOSÍTÁSA
- VEZÉRLÉSI ADATBÁZIS
Vegye figyelembe, hogy a külső adatforrást létrehozó bejelentkezésnek engedéllyel kell rendelkeznie a Hadoopban vagy az Azure Blob Storage-ban található külső adatforrás olvasásához és írásához.
Fontos
Az ALTER ANY KÜLSŐ ADATFORRÁS engedély lehetővé teszi bármely egyszerű felhasználó számára, hogy külső adatforrás-objektumokat hozzon létre és módosítson, ezért lehetővé teszi az adatbázis hatókörébe tartozó összes hitelesítő adat elérését is az adatbázisban. Ezt az engedélyt kiemelt jogosultságúnak kell tekinteni, ezért csak megbízható rendszerbiztonsági tagoknak adható.
Hibakezelés
A CREATE EXTERNAL TABLE utasítás végrehajtása során a PolyBase megpróbál csatlakozni a külső adatforráshoz. Ha a kapcsolódási kísérlet meghiúsul, az utasítás sikertelen lesz, és a külső tábla nem jön létre. Egy vagy több percig is eltarthat, amíg a parancs meghibásodik, mivel a PolyBase újrapróbálkozza a kapcsolatot, mielőtt végül meghiúsul a lekérdezés.
Megjegyzések
Alkalmi lekérdezési forgatókönyvekben, például SELECT FROM EXTERNAL TABLEa PolyBase egy ideiglenes táblában tárolja a külső adatforrásból lekért sorokat. A lekérdezés befejezése után a PolyBase eltávolítja és törli az ideiglenes táblát. A rendszer nem tárol állandó adatokat SQL-táblákban.
Ezzel szemben az importálási forgatókönyvben( például a SELECT INTO FROM EXTERNAL TABLE) a PolyBase a külső adatforrásból lekért sorokat állandó adatként tárolja az SQL-táblában. Az új tábla a lekérdezés végrehajtása során jön létre, amikor a PolyBase lekéri a külső adatokat.
A PolyBase a lekérdezési számítások egy részét leküldi a Hadoopba a lekérdezési teljesítmény javítása érdekében. Ezt a műveletet predikátum leküldéses leküldésnek nevezzük. Az engedélyezéshez adja meg a Hadoop erőforrás-kezelő helybeállítását a KÜLSŐ ADATFORRÁS LÉTREHOZÁSA (Transact-SQL) mezőben.
Számos olyan külső táblát hozhat létre, amelyek ugyanarra vagy különböző külső adatforrásokra hivatkoznak.
Korlátozások
Mivel egy külső tábla adatai nincsenek a berendezés közvetlen felügyelete alatt, külső folyamattal bármikor módosíthatók vagy eltávolíthatók. Ennek eredményeképpen a külső táblák lekérdezési eredményei nem garantáltan determinisztikusak. Ugyanez a lekérdezés különböző eredményeket adhat vissza minden alkalommal, amikor egy külső táblán fut. Hasonlóképpen előfordulhat, hogy egy lekérdezés meghiúsul, ha a külső adatokat áthelyezik vagy eltávolítják.
Több külső táblát is létrehozhat, amelyek mindegyike különböző külső adatforrásokra hivatkozik. Ha egyszerre futtat lekérdezéseket különböző Hadoop-adatforrásokkal, akkor minden Hadoop-forrásnak ugyanazt a "hadoop-kapcsolat" kiszolgálókonfigurációs beállítást kell használnia. Például nem futtathat egyszerre lekérdezést Egy Cloudera Hadoop-fürt és egy Hortonworks Hadoop-fürt között, mivel ezek különböző konfigurációs beállításokat használnak. A konfigurációs beállításokról és a támogatott kombinációkról lásd a PolyBase kapcsolati konfigurációját (Transact-SQL).
Külső táblákban csak ezek az adatdefiníciós nyelvi (DDL-) utasítások engedélyezettek:
-
CREATE TABLEésDROP TABLE -
CREATE STATISTICSésDROP STATISTICS -
CREATE VIEWésDROP VIEW
A szerkezetek és műveletek nem támogatottak:
- Külső
DEFAULTtáblaoszlopokra vonatkozó korlátozás - Adatmanipulációs nyelv (DML) a törlési, beszúrási és frissítési műveletekhez
- Dinamikus adatmaszkolás külső táblaoszlopokon
Lekérdezési korlátozások
A PolyBase legfeljebb 33 000 fájlt használhat fel mappánként 32 egyidejű PolyBase-lekérdezés futtatásakor. Ez a maximális szám az egyes HDFS-mappákban lévő fájlokat és almappákat is tartalmazza. Ha az egyidejűség mértéke kisebb, mint 32, a felhasználó több mint 33 ezer fájlt tartalmazó HDFS-mappákon futtathat PolyBase-lekérdezéseket. Javasoljuk, hogy tartsa rövidre a külső fájl elérési útját, és HDFS-mappánként legfeljebb 30 ezer fájlt használjon. Ha túl sok fájlra hivatkozik, előfordulhat, hogy a Java virtuális gép (JVM) memóriakimaradást tapasztal.
Táblázatszélesség korlátozásai
Az SQL Server 2016-ban a PolyBase sorszélesség-korlátja 32 KB egy érvényes sor tábladefiníciónkénti maximális mérete alapján. Ha az oszlopséma összege nagyobb, mint 32 KB, a PolyBase nem tudja lekérdezni az adatokat.
Az Azure Synapse Analyticsben ez a korlátozás 1 MB-ra nőtt.
Adattípus korlátozásai
A következő adattípusok nem használhatók a PolyBase külső tábláiban:
- földrajzi
- geometriai
- hierarchiaazonosító
- kép
- szöveg
- kontextus
- xml
- Bármely felhasználó által definiált típus
Zár
Megosztott zárolás a SCHEMARESOLUTION objektumon.
Biztonság
A külső táblák adatfájljait a Hadoop vagy az Azure Blob Storage tárolja. Ezeket az adatfájlokat a saját folyamatai hozzák létre és kezelik. A külső adatok biztonságának kezelése az Ön feladata.
Példák
Egy. HDFS-adatok csatlakoztatása az Analytics Platform rendszeradataival
SELECT cs.user_ip FROM ClickStream cs
JOIN [User] u ON cs.user_ip = u.user_ip
WHERE cs.url = 'www.microsoft.com';
B. Soradatok importálása a HDFS-ből egy elosztott elemzési platform rendszertáblájába
CREATE TABLE ClickStream_PDW
WITH ( DISTRIBUTION = HASH (url) )
AS SELECT url, event_date, user_ip FROM ClickStream;
C. Soradatok importálása a HDFS-ből egy replikált Elemzési platform rendszertáblájába
CREATE TABLE ClickStream_PDW
WITH ( DISTRIBUTION = REPLICATE )
AS SELECT url, event_date, user_ip
FROM ClickStream;
Kapcsolódó tartalom
* Felügyelt Azure SQL-példány *
Áttekintés: Felügyelt Azure SQL-példány
Létrehoz egy külső adattáblát a felügyelt Azure SQL-példányban. További információ: Felügyelt Azure SQL-példány adatvirtualizálása.
A felügyelt Azure SQL-példány adatvirtualizálása különböző fájlformátumokban biztosít hozzáférést a külső adatokhoz az Azure Data Lake Storage Gen2-ben vagy az Azure Blob Storage-ban, valamint T-SQL-utasításokkal való lekérdezéséhez, akár helyileg tárolt relációs adatok összekapcsolásával is.
Lásd még: CREATE EXTERNAL DATA SOURCE (Transact-SQL) és DROP EXTERNAL TABLE (Transact-SQL).
Szintaxis
CREATE EXTERNAL TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
( <column_definition> [ ,...n ] )
WITH (
LOCATION = 'filepath',
DATA_SOURCE = external_data_source_name,
FILE_FORMAT = external_file_format_name
)
[;]
<column_definition> ::=
column_name <data_type>
[ COLLATE collation_name ]
[ NULL | NOT NULL ]
Érvek
{ database_name.schema_name.table_name | schema_name.table_name | table_name}
A létrehozandó tábla egy-háromrészes neve.
Külső tábla esetén csak a tábla metaadatai, valamint az Azure Data Lake-ben vagy az Azure Blob Storage-ban hivatkozott fájl vagy mappa alapszintű statisztikái. Külső táblák létrehozásakor a rendszer nem helyez át vagy tárol tényleges adatokat.
Fontos
A legjobb teljesítmény érdekében, ha a külső adatforrás-illesztőprogram támogatja a háromrészes nevet, erősen ajánlott megadni a háromrészes nevet.
< > column_definition [ ,... n ]
A CREATE EXTERNAL TABLE támogatja az oszlopok nevének, adattípusának, nullbilitásának és rendezésének konfigurálását. Külső táblák alapértelmezett KORLÁTOZÁSát nem használhatja.
Az oszlopdefinícióknak, beleértve az adattípusokat és az oszlopok számát, meg kell egyeznie a külső fájlok adataival. Ha eltérés van, a fájlsorokat a rendszer elutasítja a tényleges adatok lekérdezésekor.
LOCATION = "folder_or_filepath"
Megadja az Azure Data Lake-ben vagy az Azure Blob Storage-ban lévő tényleges adatok mappáit vagy fájlelérési útját és fájlnevét. A hely a gyökérmappából indul ki. A gyökérmappa a külső adatforrásban megadott adathely.
CREATE EXTERNAL TABLE nem hozza létre az elérési utat és a mappát.
Ha a LOCATION-t mappaként adja meg, a külső táblából kiválasztott Felügyelt Azure SQL-példány lekérdezése lekéri a fájlokat a mappából, de nem az összes almappájából.
A felügyelt Azure SQL-példány nem talál fájlokat almappákban vagy rejtett mappákban. Nem ad vissza olyan fájlokat sem, amelyeknek a neve aláhúzással (_) vagy ponttal (.) kezdődik.
Ha LOCATION='/webdata/', a következő képen egy lekérdezés mydata.txtsorait adja vissza. Nem adja vissza mydata2.txt, mert egy almappában van, nem adja vissza mydata3.txt, mert rejtett mappában van, és nem _hidden.txt, mert rejtett fájl.
DATA_SOURCE = external_data_source_name
Megadja annak a külső adatforrásnak a nevét, amely a külső adatok helyét tartalmazza. Ez a hely az Azure Data Lake-ben található. Külső adatforrás létrehozásához használja CREATE EXTERNAL DATA SOURCE (Transact-SQL).
FILE_FORMAT = external_file_format_name
Megadja annak a külső fájlformátum objektumnak a nevét, amely a külső adatok fájltípusát és tömörítési módját tárolja. Külső fájlformátum létrehozásához használja a CREATE EXTERNAL FILE FORMAT (Transact-SQL).
Engedélyek
A következő felhasználói engedélyek szükségesek:
- TÁBLA LÉTREHOZÁSA
- SÉMA MÓDOSÍTÁSA
- KÜLSŐ ADATFORRÁS MÓDOSÍTÁSA
- KÜLSŐ FÁJLFORMÁTUM MÓDOSÍTÁSA
- A CONTROL DATABASE-engedélyek csak a főkulcs, az adatbázis hatókörébe tartozó hitelesítő adatok és külső adatforrás létrehozásához szükségesek.
Vegye figyelembe, hogy a külső adatforrást létrehozó bejelentkezésnek engedéllyel kell rendelkeznie a Hadoopban vagy az Azure Blob Storage-ban található külső adatforrás olvasásához és írásához.
Fontos
Az ALTER ANY KÜLSŐ ADATFORRÁS engedély lehetővé teszi bármely egyszerű felhasználó számára, hogy külső adatforrás-objektumokat hozzon létre és módosítson, ezért lehetővé teszi az adatbázis hatókörébe tartozó összes hitelesítő adat elérését is az adatbázisban. Ezt az engedélyt kiemelt jogosultságúnak kell tekinteni, ezért csak megbízható rendszerbiztonsági tagoknak adható.
Megjegyzések
Alkalmi lekérdezési forgatókönyvekben, például SELECT FROM EXTERNAL TABLEa külső adatforrásból lekért sorok egy ideiglenes táblában vannak tárolva. A lekérdezés befejezése után a rendszer eltávolítja a sorokat, és törli az ideiglenes táblát. A rendszer nem tárol állandó adatokat SQL-táblákban.
Ezzel szemben az importálási forgatókönyvben, például SELECT INTO FROM EXTERNAL TABLEa külső adatforrásból lekért sorok állandó adatokként vannak tárolva az SQL-táblában. Az új tábla a külső adatok lekérésekor jön létre a lekérdezés végrehajtása során.
A felügyelt Azure SQL-példány adatvirtualizálása jelenleg írásvédett.
Számos olyan külső táblát hozhat létre, amelyek ugyanarra vagy különböző külső adatforrásokra hivatkoznak.
Korlátozások
Mivel egy külső tábla adatai nem tartoznak a felügyelt Azure SQL-példány közvetlen felügyelete alá, külső folyamat bármikor módosíthatja vagy eltávolíthatja őket. Ennek eredményeképpen a külső táblák lekérdezési eredményei nem garantáltan determinisztikusak. Ugyanez a lekérdezés különböző eredményeket adhat vissza minden alkalommal, amikor egy külső táblán fut. Hasonlóképpen előfordulhat, hogy egy lekérdezés meghiúsul, ha a külső adatokat áthelyezik vagy eltávolítják.
Több külső táblát is létrehozhat, amelyek mindegyike különböző külső adatforrásokra hivatkozik.
Külső táblákban csak ezek az adatdefiníciós nyelvi (DDL-) utasítások engedélyezettek:
-
CREATE TABLEésDROP TABLE -
CREATE STATISTICSésDROP STATISTICS -
CREATE VIEWésDROP VIEW
A szerkezetek és műveletek nem támogatottak:
- A
DEFAULTkülső táblaoszlopokra vonatkozó korlátozás - Adatmanipulációs nyelv (DML) a törlési, beszúrási és frissítési műveletekhez
Táblázatszélesség korlátozásai
Az 1 MB-os sorszélesség-korlát egy érvényes sor tábladefiníció szerinti maximális méretén alapul. Ha az oszlopséma összege nagyobb, mint 1 MB, az adatvirtualizálási lekérdezések sikertelenek lesznek.
Adattípus korlátozásai
A következő adattípusok nem használhatók külső táblákban a felügyelt Azure SQL-példányban:
- földrajzi
- geometriai
- hierarchiaazonosító
- kép
- szöveg
- kontextus
- xml
- json
- Bármely felhasználó által definiált típus
Zár
Megosztott zárolás a SCHEMARESOLUTION objektumon.
Példák
Egy. Külső adatok lekérdezése felügyelt Azure SQL-példányból külső táblával
További példákért lásd a CREATE EXTERNAL DATA SOURCE (Transact-SQL) című témakört, vagy tekintse meg a felügyelt Azure SQL-példány adatvirtualizálását.
Ha nem létezik, hozza létre az adatbázis főkulcsát.
-- Optional: Create MASTER KEY if it doesn't exist in the database: CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong Password>' GOHozza létre az adatbázis hatókörébe tartozó hitelesítő adatokat EGY SAS-jogkivonat használatával. Felügyelt identitást is használhat.
CREATE DATABASE SCOPED CREDENTIAL MyCredential WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<KEY>' ; --Removing leading '?' GOHozza létre a külső adatforrást a hitelesítő adatok használatával.
--Create external data source pointing to the file path, and referencing database-scoped credential: CREATE EXTERNAL DATA SOURCE MyPrivateExternalDataSource WITH ( LOCATION = 'abs://public@pandemicdatalake.blob.core.windows.net/curated/covid-19/bing_covid-19_data/latest' CREDENTIAL = [MyCredential] ) GOHozzon létre egy KÜLSŐ FÁJLFORMÁTUMOT és egy KÜLSŐ TÁBLÁt, hogy úgy kérdezhesse le az adatokat, mintha helyi tábla lenne.
-- Or, create an EXTERNAL FILE FORMAT and an EXTERNAL TABLE --Create external file format CREATE EXTERNAL FILE FORMAT DemoFileFormat WITH ( FORMAT_TYPE=PARQUET ) GO --Create external table: CREATE EXTERNAL TABLE tbl_TaxiRides( vendorID VARCHAR(100) COLLATE Latin1_General_BIN2, tpepPickupDateTime DATETIME2, tpepDropoffDateTime DATETIME2, passengerCount INT, tripDistance FLOAT, puLocationId VARCHAR(8000), doLocationId VARCHAR(8000), startLon FLOAT, startLat FLOAT, endLon FLOAT, endLat FLOAT, rateCodeId SMALLINT, storeAndFwdFlag VARCHAR(8000), paymentType VARCHAR(8000), fareAmount FLOAT, extra FLOAT, mtaTax FLOAT, improvementSurcharge VARCHAR(8000), tipAmount FLOAT, tollsAmount FLOAT, totalAmount FLOAT ) WITH ( LOCATION = 'yellow/puYear=*/puMonth=*/*.parquet', DATA_SOURCE = NYCTaxiExternalDataSource, FILE_FORMAT = MyFileFormat ); GO --Then, query the data via an external table with T-SQL: SELECT TOP 10 * FROM tbl_TaxiRides; GO
Kapcsolódó tartalom
További információ a külső táblákról és a kapcsolódó fogalmakról az alábbi cikkekben:
Áttekintés: Microsoft Fabric
A következőkre vonatkozik: Microsoft Fabric Data Warehouse
A Fabric Data Warehouse-ra vonatkozó további információkért és példákért OPENROWSET lásd: