diff --git a/samples/demos/SQLDW/free-trial-lab/CTAS-hash.sql b/samples/demos/SQLDW/free-trial-lab/CTAS-hash.sql new file mode 100644 index 00000000..26a60344 --- /dev/null +++ b/samples/demos/SQLDW/free-trial-lab/CTAS-hash.sql @@ -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; diff --git a/samples/demos/SQLDW/free-trial-lab/CTAS.sql b/samples/demos/SQLDW/free-trial-lab/CTAS.sql new file mode 100644 index 00000000..20d90cbf --- /dev/null +++ b/samples/demos/SQLDW/free-trial-lab/CTAS.sql @@ -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]') +; diff --git a/samples/demos/SQLDW/free-trial-lab/README.md b/samples/demos/SQLDW/free-trial-lab/README.md new file mode 100644 index 00000000..e2a763f6 --- /dev/null +++ b/samples/demos/SQLDW/free-trial-lab/README.md @@ -0,0 +1 @@ +This folder contains the PDF and SQL files in order to complete the SQL Data Warehouse Free Trial lab. diff --git a/samples/demos/SQLDW/free-trial-lab/add-user-to-role-xlrgrc.sql b/samples/demos/SQLDW/free-trial-lab/add-user-to-role-xlrgrc.sql new file mode 100644 index 00000000..c431f163 --- /dev/null +++ b/samples/demos/SQLDW/free-trial-lab/add-user-to-role-xlrgrc.sql @@ -0,0 +1,2 @@ +-- Adds user XLRCUser to the xlargerc resource class role +EXEC sp_addrolemember 'xlargerc', 'XLRCUser' \ No newline at end of file diff --git a/samples/demos/SQLDW/free-trial-lab/create-external-ds.sql b/samples/demos/SQLDW/free-trial-lab/create-external-ds.sql new file mode 100644 index 00000000..9d3fd050 --- /dev/null +++ b/samples/demos/SQLDW/free-trial-lab/create-external-ds.sql @@ -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/' +); \ No newline at end of file diff --git a/samples/demos/SQLDW/free-trial-lab/create-external-file-format.sql b/samples/demos/SQLDW/free-trial-lab/create-external-file-format.sql new file mode 100644 index 00000000..06e62c8f --- /dev/null +++ b/samples/demos/SQLDW/free-trial-lab/create-external-file-format.sql @@ -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' +); diff --git a/samples/demos/SQLDW/free-trial-lab/create-external-schema.sql b/samples/demos/SQLDW/free-trial-lab/create-external-schema.sql new file mode 100644 index 00000000..19ce7a43 --- /dev/null +++ b/samples/demos/SQLDW/free-trial-lab/create-external-schema.sql @@ -0,0 +1,3 @@ +-- Creates a schema for the external data +CREATE SCHEMA ext; +GO diff --git a/samples/demos/SQLDW/free-trial-lab/create-external-tables.sql b/samples/demos/SQLDW/free-trial-lab/create-external-tables.sql new file mode 100644 index 00000000..55163e8f --- /dev/null +++ b/samples/demos/SQLDW/free-trial-lab/create-external-tables.sql @@ -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 +) +; diff --git a/samples/demos/SQLDW/free-trial-lab/create-login-user-master.sql b/samples/demos/SQLDW/free-trial-lab/create-login-user-master.sql new file mode 100644 index 00000000..0e86bb41 --- /dev/null +++ b/samples/demos/SQLDW/free-trial-lab/create-login-user-master.sql @@ -0,0 +1,3 @@ +-- Connect to master database and create a login +CREATE LOGIN XLRCLogin WITH PASSWORD = ' a123reallySTRONGpassword!'; +CREATE USER XLRCUser FOR LOGIN XLRCLogin; diff --git a/samples/demos/SQLDW/free-trial-lab/create-statistics.sql b/samples/demos/SQLDW/free-trial-lab/create-statistics.sql new file mode 100644 index 00000000..10697678 --- /dev/null +++ b/samples/demos/SQLDW/free-trial-lab/create-statistics.sql @@ -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); diff --git a/samples/demos/SQLDW/free-trial-lab/create-user-dw.sql b/samples/demos/SQLDW/free-trial-lab/create-user-dw.sql new file mode 100644 index 00000000..510244ec --- /dev/null +++ b/samples/demos/SQLDW/free-trial-lab/create-user-dw.sql @@ -0,0 +1,2 @@ +-- Connect to SQL DW database and create a database user +CREATE USER XLRCUser FOR LOGIN XLRCLogin; diff --git a/samples/demos/SQLDW/free-trial-lab/free-trial-lab.pdf b/samples/demos/SQLDW/free-trial-lab/free-trial-lab.pdf new file mode 100644 index 00000000..aadbe185 Binary files /dev/null and b/samples/demos/SQLDW/free-trial-lab/free-trial-lab.pdf differ diff --git a/samples/demos/SQLDW/free-trial-lab/grant-control.sql b/samples/demos/SQLDW/free-trial-lab/grant-control.sql new file mode 100644 index 00000000..b5774ad2 --- /dev/null +++ b/samples/demos/SQLDW/free-trial-lab/grant-control.sql @@ -0,0 +1,2 @@ +-- Grants control of DW db to new user +GRANT CONTROL ON DATABASE::NYT to XLRCUser; \ No newline at end of file diff --git a/samples/demos/SQLDW/free-trial-lab/join-query.sql b/samples/demos/SQLDW/free-trial-lab/join-query.sql new file mode 100644 index 00000000..b0e233de --- /dev/null +++ b/samples/demos/SQLDW/free-trial-lab/join-query.sql @@ -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 diff --git a/samples/demos/SQLDW/free-trial-lab/scan-query.sql b/samples/demos/SQLDW/free-trial-lab/scan-query.sql new file mode 100644 index 00000000..dbb3ff78 --- /dev/null +++ b/samples/demos/SQLDW/free-trial-lab/scan-query.sql @@ -0,0 +1 @@ +SELECT TOP(1000000) * FROM dbo.[Trip] \ No newline at end of file diff --git a/samples/demos/SQLDW/free-trial-lab/space-row-distribution.sql b/samples/demos/SQLDW/free-trial-lab/space-row-distribution.sql new file mode 100644 index 00000000..f0a7fe6a --- /dev/null +++ b/samples/demos/SQLDW/free-trial-lab/space-row-distribution.sql @@ -0,0 +1,2 @@ +-- Shows rows and space used per distribution +DBCC PDW_SHOWSPACEUSED ("dbo.Trip") \ No newline at end of file