晋江外贸网站建设,太仓市住房城乡建设局网站,黄石有哪些做视觉网站的公司,如何做彩票网站SQL Server OUTPUT Clause 会对 SQL 语句的血缘分析产生影响#xff0c;如果忽略对 OUTPUT Clause 的分析#xff0c;那么将漏掉一些关键的数据血缘关系#xff0c;从而影响数据血缘分析的准确性#xff0c;进而影响组织的数据治理质量。
Gudu SQLFlow 可以对 SQL Server …SQL Server OUTPUT Clause 会对 SQL 语句的血缘分析产生影响如果忽略对 OUTPUT Clause 的分析那么将漏掉一些关键的数据血缘关系从而影响数据血缘分析的准确性进而影响组织的数据治理质量。
Gudu SQLFlow 可以对 SQL Server 中的 OUTPUT Clause 提供完整的数据血缘分析支持。
以下是 Microsoft SQL Server 官方文档对 OUTPUT Clause 的描述。从中我们可以知道OUTPUT Clause 可以从 INSERT, UPDATE, DELETE, or MERGE 返回变动的的数据集我们可以对这些返回的数据进行再加工例如插入到其他目标表中从而在不同的表中建立数据关联形成数据血缘关系。 Returns information from, or expressions based on, each row affected by an INSERT, UPDATE, DELETE, or MERGE statement. These results can be returned to the processing application for use in such things as confirmation messages, archiving, and other such application requirements. The results can also be inserted into a table or table variable. Additionally, you can capture the results of an OUTPUT clause in a nested INSERT, UPDATE, DELETE, or MERGE statement, and insert those results into a target table or view. 下面我们以一个 SQL Server 存储过程为例这个存储过程的主体部分是 Merge 语句。这个 merge 语句的作用是如果为新纪录则插入到 dbo.Basel3 如果是已有纪录则进行日期的更新。但同时利用 OUTPUT Clause 和 外部的 Insert 语句把这条更新的纪录再次插入到 dbo.Basel3 只是 EffectiveFromDate 这个字段的值用当天的日期以形成和在 merge 中直接插入那条纪录的差别。
CREATE PROCEDURE [dbo].[sampleProcedure] (Period DATETIME)
AS
SET NOCOUNT ON;INSERT INTO dbo.Basel3
(AccountNumber,PeriodKey,ExposureAmount
)
SELECTAccountNumber,PeriodKey,ExposureAmount
FROM
(MERGE INTO [dbo].[Basel3] AS MergeTargetUSING(SELECT DISTINCTtmp.AccountNumber,tmp.PeriodKey,tmp.ExposureAmountFROM dbo.TmpBasel3 tmp (NOLOCK)LEFT JOIN dbo.Basel3 olb (NOLOCK)ON tmp.AccountNumber olb.AccountNumberAND olb.CurrentIndicator 1WHERE olb.Basel3Indicator tmp.Basel3Indicator ) AS MergeSourceON MergeTarget.[AccountNumber] MergeSource.[AccountNumber]AND MergeTarget.[CurrentIndicator] 1WHEN NOT MATCHEDTHEN INSERT( AccountNumber,PeriodKey,ExposureAmount)VALUES(MergeSource.AccountNumber,MergeSource.PeriodKey,MergeSource.ExposureAmount)WHEN MATCHEDTHEN UPDATESET MergeTarget.[CurrentIndicator] 0,MergeTarget.[EffectiveToDate] GETDATE()OUTPUT $Action AS [ActionOut] ,MergeSource.AccountNumber,MergeSource.PeriodKey,MergeSource.ExposureAmount) AS MergeOutWHERE MergeOut.[ActionOut] UPDATEGudu SQLFlow 分析后准确给出了该 SQL Server 存储过程的数据血缘。
我们可以看到 dbo.Basel3 这个表的数据不但有从 Merge Insert 语句插入的也有通过 Merge OUTPUT Clause 返回然后再通过 Insert 语句插入的。
可视化的结果如下 参考
马哈鱼数据血缘关系分析工具中文网站: https://www.sqlflow.cn
马哈鱼数据血缘关系分析工具英文网站: https://docs.gudusoft.com
马哈鱼数据血缘关系分析工具在线使用: https://sqlflow.gudusoft.com