Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit

Permalink
Moving Setup of External Adhoc Data source into SQL file
Browse files Browse the repository at this point in the history
  • Loading branch information
AyoOlubeko committed Jun 15, 2017
1 parent d59b082 commit e960cf7
Show file tree
Hide file tree
Showing 2 changed files with 156 additions and 155 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,162 @@
-- *******************************************************
-- SETUP Adhoc Analytics Infrastructure
-- *******************************************************

-- Create encryption key that will encrypt database logins
CREATE MASTER KEY;
GO

-- Create login credential for catalog database
CREATE DATABASE SCOPED CREDENTIAL [AdhocQueryDBCred]
WITH IDENTITY = N'developer', SECRET = N'P@ssword1';
GO

-- Add catalog database as external data source using credential created above
-- **NOTE:** MODIFY WTPUSER VARIABLE BELOW WITH YOUR USER ID
CREATE EXTERNAL DATA SOURCE [WtpTenantDBs]
WITH
(
TYPE = SHARD_MAP_MANAGER,
LOCATION = N'catalog-<WTPUSER>.database.windows.net', -- << MODIFY <WTPUSER> variable with your user id from Wingtip deployment
DATABASE_NAME = 'tenantcatalog',
SHARD_MAP_NAME = 'tenantcatalog',
CREDENTIAL = [AdhocQueryDBCred]
);
GO

-- Add tenant tables that will be used for querying data across all tenants

SET ANSI_NULLS ON;
SET QUOTED_IDENTIFIER OFF;
GO

CREATE EXTERNAL TABLE [dbo].[VenueEvents]
(
[VenueId] INT NOT NULL,
[EventId] INT NOT NULL,
[EventName] NVARCHAR (50) NOT NULL,
[Subtitle] NVARCHAR (50) NULL,
[Date] DATETIME NOT NULL
)
WITH
(
DATA_SOURCE = [WtpTenantDBs],
DISTRIBUTION = ROUND_ROBIN
);
GO

SET ANSI_NULLS, QUOTED_IDENTIFIER ON;
GO

SET ANSI_NULLS ON;
SET QUOTED_IDENTIFIER OFF;
GO

CREATE EXTERNAL TABLE [dbo].[VenueTicketPurchases]
(
[VenueId] INT NOT NULL,
[TicketPurchaseId] INT NOT NULL,
[PurchaseDate] DATETIME NOT NULL,
[PurchaseTotal] MONEY NOT NULL,
[CustomerId] INT NOT NULL
)
WITH
(
DATA_SOURCE = [WtpTenantDBs],
DISTRIBUTION = ROUND_ROBIN
);
GO

SET ANSI_NULLS, QUOTED_IDENTIFIER ON;
GO

SET ANSI_NULLS ON;
SET QUOTED_IDENTIFIER OFF;
GO

CREATE EXTERNAL TABLE [dbo].[VenueTickets]
(
[VenueId] INT NOT NULL,
[TicketId] INT NOT NULL,
[RowNumber] INT NOT NULL,
[SeatNumber] INT NOT NULL,
[EventId] INT NOT NULL,
[SectionId] INT NOT NULL,
[TicketPurchaseId] INT NOT NULL
)
WITH
(
DATA_SOURCE = [WtpTenantDBs],
DISTRIBUTION = ROUND_ROBIN
);
GO

SET ANSI_NULLS, QUOTED_IDENTIFIER ON;
GO

SET ANSI_NULLS ON;
SET QUOTED_IDENTIFIER OFF;
GO

CREATE EXTERNAL TABLE [dbo].[Venues]
(
[VenueId] INT NOT NULL,
[VenueName] NVARCHAR (50) NOT NULL,
[VenueType] CHAR (30) NOT NULL,
[AdminEmail] NCHAR (30) NOT NULL,
[PostalCode] CHAR (10) NULL,
[CountryCode] CHAR (3) NOT NULL,
[Server] NVARCHAR(128) NOT NULL,
[DatabaseName] NVARCHAR(128) NOT NULL
)
WITH
(
DATA_SOURCE = [WtpTenantDBs],
DISTRIBUTION = ROUND_ROBIN
);
GO

CREATE TABLE [dbo].[VenueTypes]
(
[VenueType] CHAR(30) NOT NULL,
[VenueTypeName] NCHAR(30) NOT NULL,
[EventTypeName] NVARCHAR(30) NOT NULL,
[EventTypeShortName] NVARCHAR(20) NOT NULL,
[EventTypeShortNamePlural] NVARCHAR(20) NOT NULL,
[Language] CHAR(8) NOT NULL,
PRIMARY KEY CLUSTERED ([VenueType] ASC)
)
GO

-- Create local venuetypes table that will store the types of venues available on the Wingtips tickets platform

CREATE UNIQUE INDEX IX_VENUETYPES_VENUETYPE ON [dbo].[VenueTypes] ([VenueType])
GO

CREATE UNIQUE INDEX IX_VENUETYPES_VENUETYPENAME_LANGUAGE ON [dbo].[VenueTypes] ([VenueTypeName], [Language])
GO

INSERT INTO [dbo].[VenueTypes]
([VenueType],[VenueTypeName],[EventTypeName],[EventTypeShortName],[EventTypeShortNamePlural],[Language])
VALUES
('multipurpose','Multi-Purpose','Event', 'Event','Events','en-us'),
('classicalmusic','Classical Music ','Classical Concert','Concert','Concerts','en-us'),
('jazz','Jazz','Jazz Session','Session','Sessions','en-us'),
('judo','Judo','Judo Tournament','Tournament','Tournaments','en-us'),
('soccer','Soccer','Soccer Match', 'Match','Matches','en-us'),
('motorracing','Motor Racing','Car Race', 'Race','Races','en-us'),
('dance', 'Dance', 'Performance', 'Performance', 'Performances','en-us'),
('blues', 'Blues', 'Blues Session', 'Session','Sessions','en-us' ),
('rockmusic','Rock Music','Rock Concert','Concert', 'Concerts','en-us'),
('opera','Opera','Opera','Opera','Operas','en-us');
GO

PRINT N'Update complete.';
GO

--- Verify that the external data source and tables exist in the adhoc analytics database
select * from sys.external_data_sources;
select * from sys.external_tables;

GO

-- *******************************************************
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,157 +66,3 @@ New-AzureRmSqlDatabase `
-DatabaseName $databaseName `
-RequestedServiceObjectiveName $config.AdhocAnalyticsDatabaseServiceObjective `
> $null

$commandText = "
CREATE MASTER KEY;
GO
CREATE DATABASE SCOPED CREDENTIAL [AdhocQueryDBCred]
WITH IDENTITY = N'$($config.CatalogAdminUserName)', SECRET = N'$($config.CatalogAdminPassword)';
GO
CREATE EXTERNAL DATA SOURCE [WtpTenantDBs]
WITH (
TYPE = SHARD_MAP_MANAGER,
LOCATION = N'$fullyQualfiedCatalogServerName',
DATABASE_NAME = N'$($config.CatalogDatabaseName)',
SHARD_MAP_NAME = N'$($config.CatalogShardMapName)',
CREDENTIAL = [AdhocQueryDBCred]
);
GO
SET ANSI_NULLS ON;
SET QUOTED_IDENTIFIER OFF;
GO
CREATE EXTERNAL TABLE [dbo].[VenueEvents] (
[VenueId] INT NOT NULL,
[EventId] INT NOT NULL,
[EventName] NVARCHAR (50) NOT NULL,
[Subtitle] NVARCHAR (50) NULL,
[Date] DATETIME NOT NULL
)
WITH (
DATA_SOURCE = [WtpTenantDBs],
DISTRIBUTION = ROUND_ROBIN
);
GO
SET ANSI_NULLS, QUOTED_IDENTIFIER ON;
GO
SET ANSI_NULLS ON;
SET QUOTED_IDENTIFIER OFF;
GO
CREATE EXTERNAL TABLE [dbo].[VenueTicketPurchases] (
[VenueId] INT NOT NULL,
[TicketPurchaseId] INT NOT NULL,
[PurchaseDate] DATETIME NOT NULL,
[PurchaseTotal] MONEY NOT NULL,
[CustomerId] INT NOT NULL
)
WITH (
DATA_SOURCE = [WtpTenantDBs],
DISTRIBUTION = ROUND_ROBIN
);
GO
SET ANSI_NULLS, QUOTED_IDENTIFIER ON;
GO
SET ANSI_NULLS ON;
SET QUOTED_IDENTIFIER OFF;
GO
CREATE EXTERNAL TABLE [dbo].[VenueTickets] (
[VenueId] INT NOT NULL,
[TicketId] INT NOT NULL,
[RowNumber] INT NOT NULL,
[SeatNumber] INT NOT NULL,
[EventId] INT NOT NULL,
[SectionId] INT NOT NULL,
[TicketPurchaseId] INT NOT NULL
)
WITH (
DATA_SOURCE = [WtpTenantDBs],
DISTRIBUTION = ROUND_ROBIN
);
GO
SET ANSI_NULLS, QUOTED_IDENTIFIER ON;
GO
SET ANSI_NULLS ON;
SET QUOTED_IDENTIFIER OFF;
GO
CREATE EXTERNAL TABLE [dbo].[Venues] (
[VenueId] INT NOT NULL,
[VenueName] NVARCHAR (50) NOT NULL,
[VenueType] CHAR (30) NOT NULL,
[AdminEmail] NCHAR (30) NOT NULL,
[PostalCode] CHAR (10) NULL,
[CountryCode] CHAR (3) NOT NULL,
[Server] NVARCHAR(128) NOT NULL,
[DatabaseName] NVARCHAR(128) NOT NULL
)
WITH (
DATA_SOURCE = [WtpTenantDBs],
DISTRIBUTION = ROUND_ROBIN
);
GO
CREATE TABLE [dbo].[VenueTypes]
(
[VenueType] CHAR(30) NOT NULL,
[VenueTypeName] NCHAR(30) NOT NULL,
[EventTypeName] NVARCHAR(30) NOT NULL,
[EventTypeShortName] NVARCHAR(20) NOT NULL,
[EventTypeShortNamePlural] NVARCHAR(20) NOT NULL,
[Language] CHAR(8) NOT NULL,
PRIMARY KEY CLUSTERED ([VenueType] ASC)
)
GO
CREATE UNIQUE INDEX IX_VENUETYPES_VENUETYPE ON [dbo].[VenueTypes] ([VenueType])
GO
CREATE UNIQUE INDEX IX_VENUETYPES_VENUETYPENAME_LANGUAGE ON [dbo].[VenueTypes] ([VenueTypeName], [Language])
GO
INSERT INTO [dbo].[VenueTypes]
([VenueType],[VenueTypeName],[EventTypeName],[EventTypeShortName],[EventTypeShortNamePlural],[Language])
VALUES
('multipurpose','Multi-Purpose','Event', 'Event','Events','en-us'),
('classicalmusic','Classical Music ','Classical Concert','Concert','Concerts','en-us'),
('jazz','Jazz','Jazz Session','Session','Sessions','en-us'),
('judo','Judo','Judo Tournament','Tournament','Tournaments','en-us'),
('soccer','Soccer','Soccer Match', 'Match','Matches','en-us'),
('motorracing','Motor Racing','Car Race', 'Race','Races','en-us'),
('dance', 'Dance', 'Performance', 'Performance', 'Performances','en-us'),
('blues', 'Blues', 'Blues Session', 'Session','Sessions','en-us' ),
('rockmusic','Rock Music','Rock Concert','Concert', 'Concerts','en-us'),
('opera','Opera','Opera','Opera','Operas','en-us');
GO
PRINT N'Update complete.';
GO
"
Write-output "Initializing schema in '$databaseName'..."

Invoke-Sqlcmd `
-ServerInstance $fullyQualfiedCatalogServerName `
-Username $config.CatalogAdminUserName `
-Password $config.CatalogAdminPassword `
-Database $config.AdhocAnalyticsDatabaseName `
-Query $commandText `
-ConnectionTimeout 30 `
-QueryTimeout 30 `
-EncryptConnection

Write-Output "Deployment of Ad-hoc Analytics database '$databaseName' complete."

0 comments on commit e960cf7

Please sign in to comment.