Skip to content

Commit 28be38d

Browse files
committed
update
1 parent ab6a8ae commit 28be38d

2 files changed

Lines changed: 52 additions & 20 deletions

File tree

README.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Data Lineage for Microsoft SQL Server T-SQL Queries
1+
# Data Lineage for Microsoft T-SQL Queries
22

3-
Data Lineage Transact SQL (T-SQL) for [Microsoft SQL Server](https://www.microsoft.com/en-us/sql-server) enables you to find the data origins and data destinations in your query. It gives you the visibility over query data columns and ability to track the changes over time.
3+
Data Lineage Transact SQL (T-SQL) for [Microsoft SQL Server](https://www.microsoft.com/en-us/sql-server) or [Azure SQL Server](https://azure.microsoft.com/en-us/services/sql-database/campaign/) enables you to find the data origins and data destinations in your query. It gives you the visibility over query data columns and ability to track the changes over time.
44

55

66
# Features
@@ -37,23 +37,30 @@ Run **TSQL_data_lineage.sql** file to create a lineage procedure. This script
3737

3838
```sql
3939
-- Get your query:
40-
declare @test_query VARCHAR(8000) = '
40+
DECLARE @test_query VARCHAR(MAX) = '
4141
42+
-- This is a sample query to test data lineage
4243
SELECT
4344
s.[BusinessEntityID]
4445
,p.[Title]
4546
,p.[FirstName]
4647
,p.[MiddleName]
47-
,p.[LastName]
48+
-- ,p.[LastName]
4849
,p.[Suffix]
49-
,e.[JobTitle] as imeSluzbe
50+
,e.[JobTitle] as JobName
5051
,p.[EmailPromotion]
5152
,s.[SalesQuota]
5253
,s.[SalesYTD]
5354
,s.[SalesLastYear]
5455
,( SELECT GETDATE() ) AS DateNow
5556
,( select count(*) FROM [AdventureWorks2014].sales.[SalesPerson] ) as totalSales
5657
58+
/*
59+
60+
Adding some comments!
61+
62+
*/
63+
5764
FROM [AdventureWorks2014].sales.[SalesPerson] s
5865
LEFT JOIN [AdventureWorks2014].[HumanResources].[Employee] e
5966
ON e.[BusinessEntityID] = s.[BusinessEntityID]

TSQL_data_lineage.sql

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -223,20 +223,33 @@ CREATE TABLE dbo.SQL_query_table (
223223
******************************** */
224224

225225

226+
227+
DECLARE @orig_q VARCHAR(MAX)
228+
SELECT @orig_q = COALESCE(@orig_q + ', ', '') + sp_text_fin
229+
FROM dbo.TK_RES
230+
order by rn asc
231+
226232
DROP TABLE IF EXISTS TK_TEST2
227233

228234

235+
DECLARE @stmt2 NVARCHAR(MAX)
236+
SET @stmt2 = REPLACE(REPLACE(@orig_q, CHAR(13), ' '), CHAR(10), ' ')
237+
238+
229239
select
230-
TRIM(REPLACE(sp_text_fin, ' ','')) as val
231-
,dbo.fn_removelistChars(sp_text_fin) as val_f
240+
TRIM(REPLACE(value, ' ','')) as val
241+
,dbo.fn_removelistChars(value) as val_f
232242
,row_number() over (ORDER BY (SELECT 1)) as rn
233243
INTO TK_TEST2
234-
from TK_RES
235-
where sp_text_fin <> ' '
244+
from string_split(REPLACE(@stmt2, CHAR(13), ' '), ' ' )
245+
WHERE
246+
REPLACE(value, ' ','') <> ' '
247+
OR REPLACE(value, ' ','') <> ' '
236248

237249

238250

239-
DROP TABLE IF EXISTS dbo.TK_RES
251+
252+
-- DROP TABLE IF EXISTS dbo.TK_RES
240253

241254

242255
-- @token = @tokenen
@@ -283,8 +296,7 @@ BEGIN
283296

284297
SET @ttok = ' ' + @token + ' as ('
285298
--IF (@ttok NOT IN (SELECT @token))
286-
-- IF (@ttok NOT IN (SELECT @stmt2))
287-
IF (@ttok NOT IN (SELECT @InputQuery))
299+
IF (@ttok NOT IN (SELECT @stmt2))
288300
INSERT INTO @table (tik, tok, order_)
289301
SELECT @token_i, @token, @order
290302

@@ -315,8 +327,10 @@ INTO dbo.fin_res
315327
FROM @table
316328

317329

318-
SELECT * FROM dbo.fin_res
319-
330+
SELECT tik AS Clause_name
331+
,tok AS Object_Name
332+
,rn AS order_DL
333+
FROM dbo.fin_res
320334

321335

322336
-- END of procedure
@@ -326,26 +340,36 @@ GO
326340

327341

328342

343+
/* **************************
344+
*
345+
* -- TEST functionalities
346+
*
347+
************************* */
329348

330-
-- TEST
331-
332-
declare @test_query VARCHAR(8000) = '
349+
DECLARE @test_query VARCHAR(MAX) = '
333350
351+
-- This is a sample query to test data lineage
334352
SELECT
335353
s.[BusinessEntityID]
336354
,p.[Title]
337355
,p.[FirstName]
338356
,p.[MiddleName]
339-
,p.[LastName]
357+
-- ,p.[LastName]
340358
,p.[Suffix]
341-
,e.[JobTitle] as imeSluzbe
359+
,e.[JobTitle] as JobName
342360
,p.[EmailPromotion]
343361
,s.[SalesQuota]
344362
,s.[SalesYTD]
345363
,s.[SalesLastYear]
346364
,( SELECT GETDATE() ) AS DateNow
347365
,( select count(*) FROM [AdventureWorks2014].sales.[SalesPerson] ) as totalSales
348366
367+
/*
368+
369+
Adding some comments!
370+
371+
*/
372+
349373
FROM [AdventureWorks2014].sales.[SalesPerson] s
350374
LEFT JOIN [AdventureWorks2014].[HumanResources].[Employee] e
351375
ON e.[BusinessEntityID] = s.[BusinessEntityID]
@@ -356,4 +380,5 @@ FROM [AdventureWorks2014].sales.[SalesPerson] s
356380

357381

358382
EXEC dbo.TSQL_data_lineage
359-
@InputQuery = @test_query
383+
@InputQuery = @test_query
384+

0 commit comments

Comments
 (0)