MDS中的TSQL业务规则列表

时间:2018-07-05 09:08:46

标签: tsql powerbi master-data-services

在查询SQL中的业务规则时我需要帮助!

我已经在MDS Web服务中创建了几个业务规则来验证我的主数据,发现我的数据中有2%不符合规则。现在,我已经创建了一个SQL订阅视图,以报告PowerBI中的无效数据。在我的PowerBI报告中,我需要告诉业务用户为什么数据无效,但是我不能告诉用户,因为订阅视图仅表明数据无效的地方,而不是为什么数据无效的原因。因此,我需要知道如何从SQL中的MDS数据库查询业务规则,并将其与PowerBI数据模型进行映射。有没有一种方法可以从MDS数据库查询业务规则列表?

1 个答案:

答案 0 :(得分:0)

好的,因此有多种解决方法。这是一些解决方案,请选择一种适合您的方案。

1。 SQL-所有业务规则列表

以下查询将检索在MDS中创建的所有活动业务规则的列表。

SELECT *
  FROM [MDM].[mdm].[viw_SYSTEM_SCHEMA_BUSINESSRULES]
  WHERE Model_Name = 'YourModelName'
  AND BusinessRule_StatusName = 'Active'

您当然可以通过Entity_Name等进行进一步过滤。 您的情况下重要的列将是:

  • [BusinessRule_Name]
  • [BusinessRule_Description]
  • [BusinessRule_RuleConditionText]
  • [BusinessRule_RuleActionText]

注意:我认为,您的方案所面临的挑战将是该实体的“订阅视图”没有失败的确切业务规则的ID。因此,我不确定您如何将这两个捆绑在一起(失败行->业务规则列表)。还请记住,每一行可能有多个失败的业务规则。

2。使用视图viw_SYSTEM_USER_VALIDATION

此视图具有所有失败的业务规则(+行信息)的历史列表。您可以通过以下方式使用视图:

SELECT 
    DISTINCT ValidationIssue_ID, Version_ID, VersionName, Model_ID, ModelName, Entity_ID, EntityName, Hierarchy_ID, HierarchyName, Member_ID, MemberCode, MemberType_ID, MemberType, ConditionText, ActionText, BusinessRuleID, BusinessRuleName, PriorityRank, DateCreated, NotificationStatus_ID, NotificationStatus
FROM [MDM].[mdm].[viw_SYSTEM_USER_VALIDATION]
 WHERE --CAST(DateCreated as DATE) = CAST(GETDATE() as DATE) AND
    ModelName = 'YourModelName'
    --AND EntityName IN ('Entity_1','Entity_2') -- Use this to Filter on specific Entities

在这里,使用列Model_IDEntity_IDMember_ID / MemberCode来标识失败的特定模型,实体和行。

BusinessRuleNameConditionTextActionText将为您的用户提供有关失败的业务规则的其他信息。

注意:

  • 使用此视图的一个问题是,即使说用户第二天解决了您的失败情况,该视图仍会显示在特定日期验证失败。 (通过列DateCreated)。
  • 还请注意,如果同一行上的多个业务规则未通过验证(此处将有不同的BusinessRuleID /名称等),则同一失败的数据行将在此处多次出现。只是要注意一点。
  • 类似地,如果同一行在不同的时间再次失败,则该行可能会出现多次。要解决此问题,并且如果最终报告可以解决此问题,请在DateCreated列上添加WHERE子句,以便仅查看今天失败的任何行。注释掉的代码行<--CAST(DateCreated as DATE) = CAST(GETDATE() as DATE) AND>的作用相同。如果您不能使用它,只需确保数据行是不同的。但是,如果执行此操作,请记住,如果昨天发生某项故障(并且仍处于“故障”状态),则该故障可能不会显示。

我的建议是使用稍作修改的解决方案2:

从您的订阅视图中获取失败行的列表(数据行的ValidationStatus实际上是静止 “失败” ),然后使用viw_SYSTEM_USER_VALIDATION进行联接您只需选择具有MAX(DateCreated)值的行(当然,对于同一数据行和业务规则)。

祝您好运,如果您在解决此问题时发现任何其他问题,请与我们所有人分享您的学习经验。

最后,如果您发现此功能有用,请记住将其标记为答案:)