Skip to content

Commit f9dae07

Browse files
author
Matt Usher
authored
Merge pull request #71 from Azure-Samples/sqlextension
Adding the FirstDayOf* functions to the toolkit
2 parents 436d975 + f69d695 commit f9dae07

File tree

8 files changed

+168
-4
lines changed

8 files changed

+168
-4
lines changed

SQL/Extension/Readme.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,20 @@ The Azure Synapse SQL Extension will install a collection of vies to your Synaps
2929
.\deploy.bat demo.database.windows.net DemoDW cloudsa very_secure_password
3030
`
3131

32+
### Clean up Example
33+
34+
`
35+
.\clean.bat demo.database.windows.net DemoDW cloudsa very_secure_password
36+
`
3237
## Version History
3338

39+
### December 15, 2020
40+
What's new:
41+
- [Function]: The `microsoft.firstdayofmonth` script installs a function that returns the first day of the specified month as DATETIME2.
42+
- [Function]: The `microsoft.firstdayofquarter` script installs a function that returns the first day of the specified quarter as DATETIME2.
43+
- [Function]: The `microsoft.firstdayofyear` script installs a function that returns the first day of the specified year as DATETIME2.
44+
- [Schema]: Added the `dbc` schema to support the `dbc.databases` and `dbc.tables` views.
45+
3446
### December 7, 2020
3547
What's new:
3648
- [Function]: The `microsoft.random` script installs a function that emulates the `RANDOM(expression, expression)` Teradata function.

SQL/Extension/clean.bat

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
@ECHO off
2+
3+
cls
4+
setlocal
5+
6+
set _secure_password=**********
7+
8+
ECHO.
9+
ECHO Azure Synapse SQL Extension toolkit v0.11.0.0 clean script
10+
11+
IF NOT "%~4"=="" IF "%~5"=="" GOTO Deploy
12+
ECHO The deploy script requires the following parameters:
13+
ECHO - server name
14+
ECHO - database name
15+
ECHO - username
16+
ECHO - password
17+
ECHO.
18+
ECHO Examples:
19+
ECHO "%~nx0" demo.database.windows.net demodb user secure_password
20+
exit /b
21+
22+
:Deploy
23+
SET _server=%~1
24+
SET _database=%~2
25+
SET _username=%~3
26+
SET _password=%~4
27+
28+
ECHO.
29+
ECHO *****************************************************************************
30+
ECHO OPTIONS
31+
ECHO.
32+
ECHO Server: %_server%
33+
ECHO Database: %_database%
34+
ECHO Username: %_username%
35+
ECHO Password: %_secure_password%
36+
ECHO *****************************************************************************
37+
ECHO.
38+
39+
40+
ECHO Removing objects
41+
42+
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\clean.sql
43+
44+
ECHO.
45+
ECHO Finished
46+
ECHO.

SQL/Extension/clean.sql

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*SELECT
2+
'IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('''+ SCHEMA_NAME(schema_id) +''') AND name = N'''+ name +''') DROP ' +
3+
CASE type
4+
WHEN 'FN' THEN 'FUNCTION'
5+
WHEN 'V' THEN 'VIEW'
6+
END + ' [' + SCHEMA_NAME(schema_id) + '].[' + name + '];'
7+
FROM
8+
sys.objects
9+
ORDER BY
10+
type,
11+
schema_id,
12+
name;
13+
*/
14+
15+
-- Functions
16+
PRINT 'Removing functions';
17+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'acosh') DROP FUNCTION [microsoft].[acosh];
18+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'asinh') DROP FUNCTION [microsoft].[asinh];
19+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'btrim') DROP FUNCTION [microsoft].[btrim];
20+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'dayoccurrence_of_month') DROP FUNCTION [microsoft].[dayoccurrence_of_month];
21+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'firstdayofmonth') DROP FUNCTION [microsoft].[firstdayofmonth];
22+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'firstdayofquarter') DROP FUNCTION [microsoft].[firstdayofquarter];
23+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'firstdayofyear') DROP FUNCTION [microsoft].[firstdayofyear];
24+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'getbit') DROP FUNCTION [microsoft].[getbit];
25+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'initcap') DROP FUNCTION [microsoft].[initcap];
26+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'instr') DROP FUNCTION [microsoft].[instr];
27+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'lpad') DROP FUNCTION [microsoft].[lpad];
28+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'ltrim') DROP FUNCTION [microsoft].[ltrim];
29+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'months_between') DROP FUNCTION [microsoft].[months_between];
30+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'next_day') DROP FUNCTION [microsoft].[next_day];
31+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'random') DROP FUNCTION [microsoft].[random];
32+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'rpad') DROP FUNCTION [microsoft].[rpad];
33+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'rtrim') DROP FUNCTION [microsoft].[rtrim];
34+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'to_char') DROP FUNCTION [microsoft].[to_char];
35+
36+
-- Views
37+
PRINT 'Removing views';
38+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'dw_active_queries') DROP VIEW [microsoft].[dw_active_queries];
39+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'dw_active_queue') DROP VIEW [microsoft].[dw_active_queue];
40+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'dw_configuration') DROP VIEW [microsoft].[dw_configuration];
41+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'dw_extension_version') DROP VIEW [microsoft].[dw_extension_version];
42+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'dw_statistics_information') DROP VIEW [microsoft].[dw_statistics_information];
43+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('dbc') AND name = N'databases') DROP VIEW [dbc].[databases];
44+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('dbc') AND name = N'tables') DROP VIEW [dbc].[tables];
45+
46+
-- Schemas
47+
PRINT 'Removing schemas';
48+
IF EXISTS(SELECT * FROM sys.schemas WHERE name = N'dbc') DROP SCHEMA [dbc];
49+
IF EXISTS(SELECT * FROM sys.schemas WHERE name = N'microsoft') DROP SCHEMA [microsoft];
50+
GO

SQL/Extension/deploy.bat

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ setlocal
66
set _secure_password=**********
77

88
ECHO.
9-
ECHO Azure Synapse SQL Extension toolkit v0.9.0.0 deployment script
9+
ECHO Azure Synapse SQL Extension toolkit v0.11.0.0 deployment script
1010

1111
IF NOT "%~4"=="" IF "%~5"=="" GOTO Deploy
1212
ECHO The deploy script requires the following parameters:
@@ -17,7 +17,6 @@ ECHO - password
1717
ECHO.
1818
ECHO Examples:
1919
ECHO "%~nx0" demo.database.windows.net demodb user secure_password
20-
REM TIMEOUT -1 1>NUL
2120
exit /b
2221

2322
:Deploy
@@ -40,16 +39,19 @@ ECHO.
4039

4140
ECHO Deploying schemas
4241

43-
REM Schema
42+
REM Schemas
43+
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\schemas\dbc.sql
4444
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\schemas\microsoft.sql
4545

4646
ECHO Deploying functions
4747

4848
REM Functions
4949
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\functions\microsoft.acosh.sql
5050
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\functions\microsoft.asinh.sql
51-
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\functions\microsoft.btrim.sql
5251
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\functions\microsoft.dayoccurrence_of_month.sql
52+
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\functions\microsoft.firstdayofmonth.sql
53+
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\functions\microsoft.firstdayofquarter.sql
54+
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\functions\microsoft.firstdayofyear.sql
5355
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\functions\microsoft.getbit.sql
5456
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\functions\microsoft.initcap.sql
5557
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\functions\microsoft.instr.sql
@@ -62,6 +64,9 @@ sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\functio
6264
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\functions\microsoft.rtrim.sql
6365
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\functions\microsoft.to_char.sql
6466

67+
REM Note: Dependent on microsoft.LTRIM and microsoft.RTRIM functions.
68+
sqlcmd -S %_server% -d %_database% -U %_username% -P %_password% -I -i .\functions\microsoft.btrim.sql
69+
6570
ECHO Deploying views
6671

6772
REM Views

SQL/Extension/functions/Readme.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,18 @@ The `microsoft.btrim` script installs a function that emulates the `TRIM(BOTH 't
1212
## microsoft.dayoccurrence_of_month
1313
The `microsoft.dayoccurrence_of_month` script installs a function that emulates the `DAYOCCURRENCE_OF_MONTH(expression)` Teradata function.
1414

15+
## microsoft.firstdayofmonth
16+
The `microsoft.firstdayofmonth` script installs a function that returns the first day of the specified month as DATETIME2.
17+
18+
## microsoft.firstdayofquarter
19+
The `microsoft.firstdayofquarter` script installs a function that returns the first day of the specified quarter as DATETIME2.
20+
21+
## microsoft.firstdayofyear
22+
The `microsoft.firstdayofyear` script installs a function that returns the first day of the specified year as DATETIME2.
23+
24+
## microsoft.firstdayofquarter
25+
The `microsoft.firstdayofquarter` script installs a function that returns the first day of the specified quarter as DATETIME2.
26+
1527
## microsoft.getbit
1628
The `microsoft.getbit` script installs a function that emulates the `TD_SYSFNLIB.GETBIT(argument, bit)` Teradata function.
1729

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'firstdayofmonth')
2+
DROP FUNCTION microsoft.firstdayofmonth;
3+
GO
4+
5+
CREATE FUNCTION microsoft.firstdayofmonth(@expression VARCHAR(8000))
6+
RETURNS DATETIME2
7+
WITH SCHEMABINDING
8+
AS
9+
BEGIN
10+
11+
RETURN DATEADD(DAY, 1, EOMONTH(@expression, -1))
12+
END
13+
GO
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'firstdayofquarter')
2+
DROP FUNCTION microsoft.firstdayofquarter;
3+
GO
4+
5+
CREATE FUNCTION microsoft.firstdayofquarter(@expression VARCHAR(8000))
6+
RETURNS DATETIME2
7+
WITH SCHEMABINDING
8+
AS
9+
BEGIN
10+
11+
RETURN DATEADD(QUARTER, DATEDIFF(QUARTER, 0, @expression), 0)
12+
END
13+
GO
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
IF EXISTS (SELECT * FROM sys.objects WHERE schema_id=SCHEMA_ID('microsoft') AND name = N'firstdayofyear')
2+
DROP FUNCTION microsoft.firstdayofyear;
3+
GO
4+
5+
CREATE FUNCTION microsoft.firstdayofyear(@expression VARCHAR(8000))
6+
RETURNS DATETIME2
7+
WITH SCHEMABINDING
8+
AS
9+
BEGIN
10+
11+
RETURN DATEADD(YEAR, DATEDIFF(YEAR, 0, @expression), 0)
12+
END
13+
GO

0 commit comments

Comments
 (0)