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.
Ez az oktatóanyag a COPY utasítással tölti be a New York Taxicab-adathalmazt egy Azure Blob Storage-fiókból. Az oktatóanyag az Azure Portalt és az SQL Server Management Studiót (SSMS) használja a következőkhöz:
- Adatok betöltésére kijelölt felhasználó létrehozása
- A mintaadatkészlet tábláinak létrehozása
- Adatok betöltése az adattárházba a COPY T-SQL utasítás használatával
- Az adatok állapotának megtekintése betöltés közben
Ha nem rendelkezik Azure-előfizetéssel, hozzon létre egy ingyenes Azure-fiókot mielőtt elkezdené.
Mielőtt elkezdené
Az oktatóanyag megkezdése előtt töltse le és telepítse az SQL Server Management Studio (SSMS) legújabb verzióját.
Ez az oktatóanyag feltételezi, hogy már létrehozott egy dedikált SQL-készletet.
Felhasználó létrehozása az adatok betöltéséhez
A kiszolgáló rendszergazdai fiókjának célja, hogy felügyeleti műveleteket végezzenek vele, és nem alkalmas a felhasználói adatok lekérdezésére. Az adatok betöltése memóriaigényes művelet. A memória maximális száma az adattárházegységek és a konfigurált erőforrásosztály szerint van meghatározva.
Érdemes létrehozni egy adatok betöltésére kijelölt felhasználót és fiókot. Ezután adja hozzá a betöltést végző felhasználót egy olyan erőforrásosztályhoz, amely lehetővé teszi a megfelelő mértékű maximális memórialefoglalást.
Csatlakozzon kiszolgálóadminisztrátorként, hogy bejelentkezéseket és felhasználókat hozzon létre. Az alábbi lépésekkel hozzon létre egy bejelentkezést és egy felhasználót.LoaderRC20 Ezután rendelje hozzá a felhasználót az staticrc20 erőforrásosztályhoz.
Az SSMS-ben válassza a
masterjobb gombbal a legördülő menü megjelenítéséhez, majd válassza az Új lekérdezés lehetőséget. Megnyílik egy új lekérdezési ablak.A lekérdezési ablakban adja meg ezeket a T-SQL-parancsokat, hogy létrehozhasson egy saját erős jelszót helyettesítő bejelentkezést és felhasználót
LoaderRC20.CREATE LOGIN LoaderRC20 WITH PASSWORD = '<strong password here>'; CREATE USER LoaderRC20 FOR LOGIN LoaderRC20;Válassza a Végrehajtás lehetőséget.
Kattintson jobb gombbal a mySampleDataWarehouse elemre, majd válassza a New Query (Új lekérdezés) elemet. Megnyílik egy új lekérdezési ablak.
Adja meg a következő T-SQL-parancsokat az
LoaderRC20bejelentkezéshez tartozóLoaderRC20nevű adatbázis-felhasználó létrehozásához. A második sor az új adattárházra vonatkozó CONTROL (vezérlési) engedélyeket ad az új felhasználónak. Ezen engedélyek megadása ahhoz hasonló, mintha az adatbázis tulajdonosává tenné a felhasználót. A harmadik sor hozzáadja az új felhasználót azstaticrc20erőforrásosztály tagjaként.CREATE USER LoaderRC20 FOR LOGIN LoaderRC20; GRANT CONTROL ON DATABASE::[mySampleDataWarehouse] to LoaderRC20; EXEC sp_addrolemember 'staticrc20', 'LoaderRC20';Válassza a Végrehajtás lehetőséget.
Csatlakozás a kiszolgálóhoz a betöltést végző felhasználóként
Az adatok betöltésének első lépése a bejelentkezés.LoaderRC20
Az Object Explorerben válassza a Csatlakozás legördülő menüt, majd az Adatbázismotort. A Connect to Server (Kapcsolódás a kiszolgálóhoz) párbeszédpanel jelenik meg.
Adja meg a teljes kiszolgálónevet, és
LoaderRC20adja meg bejelentkezésként. Adja meg a LoaderRC20-hoz tartozó jelszót.Válassza a Kapcsolódás lehetőséget.
Ha a kapcsolat készen áll, két kiszolgálókapcsolat jelenik meg az Object Explorerben. Egy kapcsolat ServerAdminként és egy kapcsolat LoaderRC20-ként.
Táblák létrehozása a mintaadatokhoz
Készen áll arra, hogy megkezdje az adatok új adattárházba való betöltését. Az oktatóanyag ezen része bemutatja, hogyan töltheti be a New York-i taxifülke-adathalmazt egy Azure Storage-blobból a COPY utasítással. A jövőbeli információkért tekintse meg a betöltési áttekintést, ha szeretné megtudni, hogyan szerezheti be az adatokat az Azure Blob Storage-ba, vagy hogyan töltheti be közvetlenül a forrásból.
Futtassa a következő SQL-szkripteket, és adja meg a betölteni kívánt adatokkal kapcsolatos információkat. Ezen információk közé tartozik az adatok helye, az adatok tartalmának formátuma és az adatok tábladefiníciója.
Az előző szakaszban bejelentkezett az adattárházba mint
LoaderRC20. Az SSMS-ben kattintson jobb gombbal a LoaderRC20-kapcsolatra, és válassza a New Query (Új lekérdezés) elemet. Megnyílik egy új lekérdezési ablak.Hasonlítsa össze a lekérdezési ablakot az előző képpel. Ellenőrizze, hogy az új lekérdezési ablak az
LoaderRC20felhasználóként fut-e, és hogy azMySampleDataWarehouseadatbázison hajt-e végre lekérdezéseket. A betöltés összes lépését ebben a lekérdezési ablakban végezze el.Futtassa a következő T-SQL-utasításokat a táblák létrehozásához:
CREATE TABLE [dbo].[Date] ( [DateID] int NOT NULL, [Date] datetime NULL, [DateBKey] char(10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [DayOfMonth] varchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [DaySuffix] varchar(4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [DayName] varchar(9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [DayOfWeek] char(1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [DayOfWeekInMonth] varchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [DayOfWeekInYear] varchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [DayOfQuarter] varchar(3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [DayOfYear] varchar(3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [WeekOfMonth] varchar(1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [WeekOfQuarter] varchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [WeekOfYear] varchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Month] varchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [MonthName] varchar(9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [MonthOfQuarter] varchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Quarter] char(1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [QuarterName] varchar(9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Year] char(4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [YearName] char(7) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [MonthYear] char(10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [MMYYYY] char(6) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [FirstDayOfMonth] date NULL, [LastDayOfMonth] date NULL, [FirstDayOfQuarter] date NULL, [LastDayOfQuarter] date NULL, [FirstDayOfYear] date NULL, [LastDayOfYear] date NULL, [IsHolidayUSA] bit NULL, [IsWeekday] bit NULL, [HolidayUSA] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) WITH ( DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ); CREATE TABLE [dbo].[Geography] ( [GeographyID] int NOT NULL, [ZipCodeBKey] varchar(10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [County] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [City] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [State] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Country] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [ZipCode] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) WITH ( DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ); CREATE TABLE [dbo].[HackneyLicense] ( [HackneyLicenseID] int NOT NULL, [HackneyLicenseBKey] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [HackneyLicenseCode] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) WITH ( DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ); CREATE TABLE [dbo].[Medallion] ( [MedallionID] int NOT NULL, [MedallionBKey] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [MedallionCode] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) WITH ( DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ); CREATE TABLE [dbo].[Time] ( [TimeID] int NOT NULL, [TimeBKey] varchar(8) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [HourNumber] tinyint NOT NULL, [MinuteNumber] tinyint NOT NULL, [SecondNumber] tinyint NOT NULL, [TimeInSecond] int NOT NULL, [HourlyBucket] varchar(15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [DayTimeBucketGroupKey] int NOT NULL, [DayTimeBucket] varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) WITH ( DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ); 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 ); CREATE TABLE [dbo].[Weather] ( [DateID] int NOT NULL, [GeographyID] int NOT NULL, [PrecipitationInches] float NOT NULL, [AvgTemperatureFahrenheit] float NOT NULL ) WITH ( DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX );
Az adatok betöltése az adattárházba
Ez a szakasz a COPY utasítással tölti be a mintaadatokat az Azure Storage Blobból.
Feljegyzés
Ez az oktatóanyag az adatokat közvetlenül a végső táblázatba tölti be. Általában egy előkészítési táblába töltené be az éles számítási feladatokat. Amíg az adatok az előkészítési táblában vannak, bármilyen szükséges átalakítás elvégezhető rajtuk.
Futtassa a következő utasításokat az adatok betöltéséhez:
COPY INTO [dbo].[Date] FROM 'https://nytaxiblob.blob.core.windows.net/2013/Date' WITH ( FILE_TYPE = 'CSV', FIELDTERMINATOR = ',', FIELDQUOTE = '' ) OPTION (LABEL = 'COPY : Load [dbo].[Date] - Taxi dataset'); COPY INTO [dbo].[Geography] FROM 'https://nytaxiblob.blob.core.windows.net/2013/Geography' WITH ( FILE_TYPE = 'CSV', FIELDTERMINATOR = ',', FIELDQUOTE = '' ) OPTION (LABEL = 'COPY : Load [dbo].[Geography] - Taxi dataset'); COPY INTO [dbo].[HackneyLicense] FROM 'https://nytaxiblob.blob.core.windows.net/2013/HackneyLicense' WITH ( FILE_TYPE = 'CSV', FIELDTERMINATOR = ',', FIELDQUOTE = '' ) OPTION (LABEL = 'COPY : Load [dbo].[HackneyLicense] - Taxi dataset'); COPY INTO [dbo].[Medallion] FROM 'https://nytaxiblob.blob.core.windows.net/2013/Medallion' WITH ( FILE_TYPE = 'CSV', FIELDTERMINATOR = ',', FIELDQUOTE = '' ) OPTION (LABEL = 'COPY : Load [dbo].[Medallion] - Taxi dataset'); COPY INTO [dbo].[Time] FROM 'https://nytaxiblob.blob.core.windows.net/2013/Time' WITH ( FILE_TYPE = 'CSV', FIELDTERMINATOR = ',', FIELDQUOTE = '' ) OPTION (LABEL = 'COPY : Load [dbo].[Time] - Taxi dataset'); COPY INTO [dbo].[Weather] FROM 'https://nytaxiblob.blob.core.windows.net/2013/Weather' WITH ( FILE_TYPE = 'CSV', FIELDTERMINATOR = ',', FIELDQUOTE = '', ROWTERMINATOR='0X0A' ) OPTION (LABEL = 'COPY : Load [dbo].[Weather] - Taxi dataset'); COPY INTO [dbo].[Trip] FROM 'https://nytaxiblob.blob.core.windows.net/2013/Trip2013' WITH ( FILE_TYPE = 'CSV', FIELDTERMINATOR = '|', FIELDQUOTE = '', ROWTERMINATOR='0X0A', COMPRESSION = 'GZIP' ) OPTION (LABEL = 'COPY : Load [dbo].[Trip] - Taxi dataset');A betöltés közben megtekintheti az adatokat. Több GB-t tölt be, és nagy teljesítményű fürtözött oszlopcentrikus indexekbe tömöríti őket. Futtassa az alábbi lekérdezést, amely dinamikus felügyeleti nézetekkel (DMV-k) jeleníti meg a töltés állapotát.
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 : Load [dbo].[Date] - Taxi dataset' OR [label] = 'COPY : Load [dbo].[Geography] - Taxi dataset' OR [label] = 'COPY : Load [dbo].[HackneyLicense] - Taxi dataset' OR [label] = 'COPY : Load [dbo].[Medallion] - Taxi dataset' OR [label] = 'COPY : Load [dbo].[Time] - Taxi dataset' OR [label] = 'COPY : Load [dbo].[Weather] - Taxi dataset' OR [label] = 'COPY : Load [dbo].[Trip] - Taxi dataset' and session_id <> session_id() and type = 'WRITER' GROUP BY r.[request_id] , r.[status] , r.resource_class , r.command;Tekintse meg az összes rendszerlekérdezést.
SELECT * FROM sys.dm_pdw_exec_requests;Élvezze az adattárházba szépen betöltött adatokat.
Az erőforrások megtisztítása
Az adattárházába betöltött számítási erőforrások és adatok díjkötelesek. Ezeket külön-külön számlázzuk.
- Ha szeretné az adatokat megtartani a tárolóban, a számítási erőforrásokat szüneteltetheti, amíg nem használja az adattárházat. A számítás szüneteltetésével csak az adattárolásért kell fizetnie, és bármikor folytathatja a számítást, amikor készen áll az adatokkal való munkára.
- Ha szeretné megelőzni a jövőbeli kiadásokat, az adattárházat törölheti is.
Kövesse az alábbi lépéseket a fölöslegessé vált erőforrások eltávolítására.
Jelentkezzen be az Azure Portalra, és válassza ki az adattárházat.
A számítás szüneteltetéséhez válassza a Szüneteltetés gombot. Ha az adattárház szüneteltetve van, az Indítás gomb látható. A számítás folytatásához válassza a Start lehetőséget.
Ha el szeretné távolítani az adattárházat, hogy ne kelljen fizetnie a számításért vagy a tárolásért, válassza a Törlés lehetőséget.
A létrehozott kiszolgáló eltávolításához válassza a mynewserver-20180430.database.windows.net az előző képen, majd válassza a Törlés lehetőséget. Ügyeljen erre, mert a kiszolgáló törlése törli a kiszolgálóhoz rendelt összes adatbázist.
Az erőforráscsoport eltávolításához válassza a myResourceGroup, majd az Erőforráscsoport törlése lehetőséget.