Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
S'applique à :SQL Server
Cet article passe en revue les options d’utilisation de PolyBase pour interroger des données externes sur place, appelées virtualisation des données, pour diverses sources de données externes.
Syntaxe T-SQL utilisée dans PolyBase
Pour utiliser PolyBase, vous devez créer des tables externes destinées à référencer vos données externes. Consultez :
- CRÉER DES INFORMATIONS D’IDENTIFICATION LIMITÉES À LA BASE DE DONNÉES (TRANSACT-SQL)
- CRÉER UNE SOURCE DE DONNÉES EXTERNE (Transact-SQL)
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- CRÉER TABLE EXTERNE (Transact-SQL)
- CREATE STATISTICS (Transact-SQL)
Remarque
Pour pouvoir utiliser PolyBase, vous devez disposer des autorisations de niveau serveur de contrôle ou sysadmin pour la base de données.
Tutoriels
Pour découvrir des exemples de requêtes, consultez Requêtes PolyBase.
Pour plus de tutoriels sur différentes sources de données externes, consultez :
- Hadoop
- Stockage Blob Azure
- SQL Server
- Oracle
- Teradata
- MongoDB
- Types génériques ODBC
- Stockage d’objets compatible S3
- CSV
- Table delta
Fonctions de métadonnées de fichier
Vous devrez peut-être parfois savoir quelle source de fichier ou de dossier est corrélée à une ligne spécifique dans le jeu de résultats.
Vous pouvez utiliser les fonctions filepath et filename pour renvoyer les noms de fichiers et/ou le chemin d'accès dans le jeu de résultats. Vous pouvez les utiliser pour filtrer des données selon le nom de fichier et/ou le chemin d’accès du dossier. Dans les sections suivantes, vous trouverez de courtes descriptions ainsi que des exemples.
Fonction du nom de fichier
Cette fonction retourne le nom du fichier d’où provient la ligne.
Le type de données de retour est nvarchar(1024). Pour des performances optimales, castez toujours le résultat de la fonction filename en un type de données approprié. Si vous utilisez le type de données 'caractère', assurez-vous que la longueur appropriée pour votre application est utilisée.
L’exemple suivant lit les fichiers de données NYC Yellow Taxi pour les trois derniers mois de 2017, et retourne le nombre de courses par fichier. La partie OPENROWSET de la requête spécifie les fichiers à lire.
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();
L’exemple suivant montre comment utiliser filename() dans la clause WHERE pour filtrer les fichiers à lire. Il accède au dossier entier dans la partie OPENROWSET de la requête et filtre les fichiers dans la clause WHERE.
Vos résultats seront les mêmes que dans l’exemple précédent.
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];
Fonction chemin de fichier
Cette fonction retourne un chemin complet ou une partie de chemin :
- En cas d’appel sans paramètre, elle retourne le chemin complet du fichier d’où est issue une ligne.
- Lorsqu'il est appelé avec un paramètre, retourne la partie du chemin qui correspond au caractère générique à la position spécifiée dans le paramètre. Par exemple, la valeur du paramètre 1 retourne une partie du chemin qui correspond au premier joker.
Le type de données de retour est nvarchar(1024). Pour des performances optimales, castez toujours le résultat de la fonction filepath en un type de données approprié. Si vous utilisez le type de données 'caractère', assurez-vous d'employer une longueur appropriée.
L’exemple suivant lit les fichiers de données NYC Yellow Taxi pour les trois derniers mois de 2017. Elle retourne le nombre de courses par chemin de fichier. La partie OPENROWSET de la requête spécifie les fichiers à lire.
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;
L’exemple suivant montre comment utiliser filepath() dans la clause WHERE pour filtrer les fichiers à lire.
Vous pouvez utiliser les caractères génériques dans la partie OPENROWSET de la requête et filtrer les fichiers dans la clause WHERE. Vos résultats seront les mêmes que dans l’exemple précédent.
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;