This commit is contained in:
Jovan Popovic
2018-10-04 09:52:27 +02:00
50 changed files with 71599 additions and 13 deletions
@@ -0,0 +1,8 @@
-- CTAS statement to create Trip table with hashed distribution on DateID column
CREATE TABLE dbo.TripHashed
WITH
(
DISTRIBUTION = Hash(DateID),
CLUSTERED COLUMNSTORE INDEX
)
AS SELECT * FROM dbo.Trip;
@@ -0,0 +1,79 @@
-- CTAS (Create Table as Select) Creates tables in the SQL DW from external tables
CREATE TABLE [dbo].[Date]
WITH
( DISTRIBUTION = ROUND_ROBIN
, CLUSTERED COLUMNSTORE INDEX
)
AS
SELECT *
FROM [ext].[Date]
OPTION (LABEL = 'CTAS : Load [dbo].[Date]')
;
CREATE TABLE [dbo].[Geography]
WITH
( DISTRIBUTION = ROUND_ROBIN
, CLUSTERED COLUMNSTORE INDEX
)
AS
SELECT *
FROM [ext].[Geography]
OPTION (LABEL = 'CTAS : Load [dbo].[Geography]')
;
CREATE TABLE [dbo].[HackneyLicense]
WITH
( DISTRIBUTION = ROUND_ROBIN
, CLUSTERED COLUMNSTORE INDEX
)
AS
SELECT *
FROM [ext].[HackneyLicense]
OPTION (LABEL = 'CTAS : Load [dbo].[HackneyLicense]')
;
CREATE TABLE [dbo].[Medallion]
WITH
( DISTRIBUTION = ROUND_ROBIN
, CLUSTERED COLUMNSTORE INDEX
)
AS
SELECT *
FROM [ext].[Medallion]
OPTION (LABEL = 'CTAS : Load [dbo].[Medallion]')
;
CREATE TABLE [dbo].[Time]
WITH
( DISTRIBUTION = ROUND_ROBIN
, CLUSTERED COLUMNSTORE INDEX
)
AS
SELECT *
FROM [ext].[Time]
OPTION (LABEL = 'CTAS : Load [dbo].[Time]')
;
CREATE TABLE [dbo].[Weather]
WITH
( DISTRIBUTION = ROUND_ROBIN
, CLUSTERED COLUMNSTORE INDEX
)
AS
SELECT *
FROM [ext].[Weather]
OPTION (LABEL = 'CTAS : Load [dbo].[Weather]')
;
CREATE TABLE [dbo].[Trip]
WITH
( DISTRIBUTION = ROUND_ROBIN
, CLUSTERED COLUMNSTORE INDEX
)
AS
SELECT *
FROM [ext].[Trip]
OPTION (LABEL = 'CTAS : Load [dbo].[Trip]')
;
@@ -0,0 +1 @@
This folder contains the PDF and SQL files in order to complete the SQL Data Warehouse Free Trial lab.
@@ -0,0 +1,2 @@
-- Adds user XLRCUser to the xlargerc resource class role
EXEC sp_addrolemember 'xlargerc', 'XLRCUser'
@@ -0,0 +1,9 @@
-- Define an external data source
-- For accessing non-public external data sources, make sure to setup credentials
-- Read more here: https://azure.microsoft.com/en-us/documentation/articles/sql-data-warehouse-get-started-load-with-polybase/#step-2-create-an-external-table-for-the-sample-data
CREATE EXTERNAL DATA SOURCE NYTPublic
WITH
(
TYPE = Hadoop
, LOCATION = 'wasbs://2013@nytpublic.blob.core.windows.net/'
);
@@ -0,0 +1,22 @@
-- Defines external file format for the NYT data in Azure Blob Storage
CREATE EXTERNAL FILE FORMAT uncompressedcsv
WITH
( FORMAT_TYPE = DELIMITEDTEXT
, FORMAT_OPTIONS ( FIELD_TERMINATOR = ','
, STRING_DELIMITER = ''
, DATE_FORMAT = ''
, USE_TYPE_DEFAULT = False
)
);
CREATE EXTERNAL FILE FORMAT compressedcsv
WITH
( FORMAT_TYPE = DELIMITEDTEXT
, FORMAT_OPTIONS ( FIELD_TERMINATOR = '|'
, STRING_DELIMITER = ''
, DATE_FORMAT = ''
, USE_TYPE_DEFAULT = False
)
, DATA_COMPRESSION = 'org.apache.hadoop.io.compress.GzipCodec'
);
@@ -0,0 +1,3 @@
-- Creates a schema for the external data
CREATE SCHEMA ext;
GO
@@ -0,0 +1,170 @@
-- Creates external tables
CREATE EXTERNAL TABLE [ext].[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
(
LOCATION = 'Date'
, DATA_SOURCE = NYTPublic
, FILE_FORMAT = uncompressedcsv
, REJECT_TYPE = value
, REJECT_VALUE = 0
)
CREATE EXTERNAL TABLE [ext].[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
(
LOCATION = 'Geography'
, DATA_SOURCE = NYTPublic
, FILE_FORMAT = uncompressedcsv
, REJECT_TYPE = value
, REJECT_VALUE = 0
)
;
CREATE EXTERNAL TABLE [ext].[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
(
LOCATION = 'HackneyLicense'
, DATA_SOURCE = NYTPublic
, FILE_FORMAT = uncompressedcsv
, REJECT_TYPE = value
, REJECT_VALUE = 0
)
;
CREATE EXTERNAL TABLE [ext].[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
(
LOCATION = 'Medallion'
, DATA_SOURCE = NYTPublic
, FILE_FORMAT = uncompressedcsv
, REJECT_TYPE = value
, REJECT_VALUE = 0
)
;
CREATE EXTERNAL TABLE [ext].[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
(
LOCATION = 'Time'
, DATA_SOURCE = NYTPublic
, FILE_FORMAT = uncompressedcsv
, REJECT_TYPE = value
, REJECT_VALUE = 0
)
;
CREATE EXTERNAL TABLE [ext].[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
(
LOCATION = 'Trip2013'
, DATA_SOURCE = NYTPublic
, FILE_FORMAT = compressedcsv
, REJECT_TYPE = value
, REJECT_VALUE = 0
)
;
CREATE EXTERNAL TABLE [ext].[Weather]
(
[DateID] int NOT NULL,
[GeographyID] int NOT NULL,
[PrecipitationInches] float NOT NULL,
[AvgTemperatureFahrenheit] float NOT NULL
)
WITH
(
LOCATION = 'Weather2013'
, DATA_SOURCE = NYTPublic
, FILE_FORMAT = uncompressedcsv
, REJECT_TYPE = value
, REJECT_VALUE = 0
)
;
@@ -0,0 +1,3 @@
-- Connect to master database and create a login
CREATE LOGIN XLRCLogin WITH PASSWORD = ' a123reallySTRONGpassword!';
CREATE USER XLRCUser FOR LOGIN XLRCLogin;
@@ -0,0 +1,3 @@
-- Creates statistics on the Date and Trip DateID columns to check join performance improvements
CREATE STATISTICS [dbo.Date DateID stats] ON dbo.Date (DateID);
CREATE STATISTICS [dbo.Trip DateID stats] ON dbo.Trip (DateID);
@@ -0,0 +1,2 @@
-- Connect to SQL DW database and create a database user
CREATE USER XLRCUser FOR LOGIN XLRCLogin;
@@ -0,0 +1,2 @@
-- Grants control of DW db to new user
GRANT CONTROL ON DATABASE::NYT to XLRCUser;
@@ -0,0 +1,29 @@
-- Join Date table and Trip table
SELECT TOP (1000000) dt.[DayOfWeek]
,tr.[MedallionID]
,tr.[HackneyLicenseID]
,tr.[PickupTimeID]
,tr.[DropoffTimeID]
,tr.[PickupGeographyID]
,tr.[DropoffGeographyID]
,tr.[PickupLatitude]
,tr.[PickupLongitude]
,tr.[PickupLatLong]
,tr.[DropoffLatitude]
,tr.[DropoffLongitude]
,tr.[DropoffLatLong]
,tr.[PassengerCount]
,tr.[TripDurationSeconds]
,tr.[TripDistanceMiles]
,tr.[PaymentType]
,tr.[FareAmount]
,tr.[SurchargeAmount]
,tr.[TaxAmount]
,tr.[TipAmount]
,tr.[TollsAmount]
,tr.[TotalAmount]
FROM [dbo].[Trip] as tr
join
dbo.[Date] as dt
on tr.DateID = dt.DateID
@@ -0,0 +1 @@
SELECT TOP(1000000) * FROM dbo.[Trip]
@@ -0,0 +1,2 @@
-- Shows rows and space used per distribution
DBCC PDW_SHOWSPACEUSED ("dbo.Trip")