Démarrage rapide : Charger en bloc des données à l’aide de l’instruction COPY

Conseil / Astuce

Microsoft Fabric Data Warehouse est un entrepôt relationnel à l’échelle de l’entreprise sur une base de lac de données, avec une architecture future, une IA intégrée et de nouvelles fonctionnalités. Si vous débutez avec l'entreposage de données, commencez par Fabric Data Warehouse. Les charges de travail de pool SQL existantes dédicées peuvent être mises à niveau vers Fabric pour accéder à de nouvelles fonctionnalités dans la science des données, l’analytique en temps réel et la création de rapports.

Dans ce guide de démarrage rapide, vous allez charger en bloc des données dans votre pool SQL dédié à l’aide de l’instruction COPY simple et flexible pour l’ingestion de données à haut débit. L’instruction COPY est l’utilitaire de chargement recommandé, car il vous permet de charger de manière transparente et flexible des données en fournissant des fonctionnalités pour :

  • Autoriser les utilisateurs privilégiés inférieurs à se charger sans avoir besoin d’autorisations CONTROL strictes sur l’entrepôt de données
  • Tirer parti d’une seule instruction T-SQL sans avoir à créer d’objets de base de données supplémentaires
  • Exploiter un modèle d'autorisation plus granulaire sans exposer de clés de compte de stockage à l'aide de Signatures d'Accès Partagé (SAS)
  • Spécifiez un autre compte de stockage pour l’emplacement ERRORFILE (REJECTED_ROW_LOCATION)
  • Personnaliser les valeurs par défaut pour chaque colonne cible et spécifier les champs de données sources à charger dans des colonnes cibles spécifiques
  • Spécifier un terminateur de ligne personnalisé pour les fichiers CSV
  • Chaîne d’échappement, champ et délimiteurs de lignes pour les fichiers CSV
  • Tirer parti des formats date de SQL Server pour les fichiers CSV
  • Spécifier des caractères génériques et plusieurs fichiers dans le chemin de l’emplacement du stockage

Prerequisites

Ce guide de démarrage rapide part du principe que vous disposez déjà d’un pool SQL dédié. Si aucun pool SQL dédié n’a été créé, utilisez le guide de démarrage rapide Créer et se connecter au portail .

Configurer les autorisations requises

-- List the permissions for your user
select  princ.name
,       princ.type_desc
,       perm.permission_name
,       perm.state_desc
,       perm.class_desc
,       object_name(perm.major_id)
from    sys.database_principals princ
left join
        sys.database_permissions perm
on      perm.grantee_principal_id = princ.principal_id
where name = '<yourusername>';

--Make sure your user has the permissions to CREATE tables in the [dbo] schema
GRANT CREATE TABLE TO <yourusername>;
GRANT ALTER ON SCHEMA::dbo TO <yourusername>;

--Make sure your user has ADMINISTER DATABASE BULK OPERATIONS permissions
GRANT ADMINISTER DATABASE BULK OPERATIONS TO <yourusername>

--Make sure your user has INSERT permissions on the target table
GRANT INSERT ON <yourtable> TO <yourusername>

Créer la table cible

Dans cet exemple, nous allons charger des données à partir du jeu de données de taxi de New York. Nous allons charger une table appelée Trip qui représente les courses de taxi prises au cours d'une année. Exécutez ce qui suit pour créer la table :

CREATE TABLE [dbo].[Trip]
(
    [DateID] int NOT NULL,
    [MedallionID] int NOT NULL,
    [HackneyLicenseID] int NOT NULL,
    [PickupTimeID] int NOT NULL,
    [DropoffTimeID] int NOT NULL,
    [PickupGeographyID] int NULL,
    [DropoffGeographyID] int NULL,
    [PickupLatitude] float NULL,
    [PickupLongitude] float NULL,
    [PickupLatLong] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [DropoffLatitude] float NULL,
    [DropoffLongitude] float NULL,
    [DropoffLatLong] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [PassengerCount] int NULL,
    [TripDurationSeconds] int NULL,
    [TripDistanceMiles] float NULL,
    [PaymentType] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [FareAmount] money NULL,
    [SurchargeAmount] money NULL,
    [TaxAmount] money NULL,
    [TipAmount] money NULL,
    [TollsAmount] money NULL,
    [TotalAmount] money NULL
)
WITH
(
    DISTRIBUTION = ROUND_ROBIN,
    CLUSTERED COLUMNSTORE INDEX
);

Exécuter l’instruction COPY

Exécutez l’instruction COPY suivante qui charge les données du compte de stockage d’objets blob Azure dans la table Trip.

COPY INTO [dbo].[Trip] FROM 'https://nytaxiblob.blob.core.windows.net/2013/Trip2013/'
WITH (
   FIELDTERMINATOR='|',
   ROWTERMINATOR='0x0A'
) OPTION (LABEL = 'COPY: dbo.trip');

Surveiller la charge

Vérifiez si votre charge progresse régulièrement en exécutant la requête suivante :

SELECT  r.[request_id]                           
,       r.[status]                               
,       r.resource_class                         
,       r.command
,       sum(bytes_processed) AS bytes_processed
,       sum(rows_processed) AS rows_processed
FROM    sys.dm_pdw_exec_requests r
              JOIN sys.dm_pdw_dms_workers w
                     ON r.[request_id] = w.request_id
WHERE [label] = 'COPY: dbo.trip' and session_id <> session_id() and type = 'WRITER'
GROUP BY r.[request_id]                           
,       r.[status]                               
,       r.resource_class                         
,       r.command;

Étapes suivantes