首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MDS中业务规则的TSQL列表

MDS中业务规则的TSQL列表
EN

Stack Overflow用户
提问于 2018-07-05 09:08:45
回答 1查看 1.3K关注 0票数 0

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

我在MDS web服务中创建了几个业务规则来验证我的主数据,发现我的数据中有2%不符合这些规则。现在,我已经创建了一个subscription视图来报告PowerBI中的无效数据。在我的PowerBI报告中,我需要告诉业务用户为什么数据无效,但是我不能,因为订阅视图只告诉数据在哪里无效,而不是为什么数据无效。因此,我需要知道如何从SQL中的MDS数据库查询业务规则,并将其映射到我的PowerBI数据模型中。是否有方法从MDS数据库查询业务规则列表?

EN

回答 1

Stack Overflow用户

发布于 2018-07-05 21:13:07

好的,有很多种方法可以这样做。这里有一些解决方案,请选择一个适合您的方案。

1. SQL -所有业务规则的列表

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

代码语言:javascript
复制
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]

注意:我认为,在您的场景中,的挑战是实体的订阅视图没有确切的失败业务规则的I。因此,我不知道您将如何将这2(失败的行->业务规则列表)联系在一起。还请记住,每行可能有多个失败的业务规则。

2.使用视图viw_SYSTEM_USER_VALIDATION

这是一个视图,它包含所有失败的业务规则(+行信息)的历史列表。您可以这样使用视图:

代码语言:javascript
复制
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来标识失败的特定模型、实体和行。

BusinessRuleNameConditionText & ActionText将向您的用户提供有关失败的业务规则的其他信息。

注:

  • 使用此视图的一个问题是,即使您的失败条件在第二天由用户解决,该视图仍将显示某个日期的验证失败。(通过列DateCreated)。
  • 还请注意,如果同一行上的多个业务规则验证失败(将有不同的BusinessRuleID/Name等),则相同的失败数据行将多次出现在这里。只是一些值得注意的事情。
  • 类似地,如果同一行再次失败,它可能会多次出现&在不同的时间再次出现。要解决这个问题,如果您的最后报告可以这样做,那么在DateCreated列中添加一个WHERE子句,这样您就只能看到今天失败的任何行。注释掉的代码行<--CAST(DateCreated as DATE) = CAST(GETDATE() as DATE) AND>也会这样做。如果不能使用,只需确保数据行是不同的。但是,如果您这样做,请记住,如果昨天发生了故障(并且仍然处于失败状态),则可能不会出现。

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

从订阅视图中获取失败行的列表(数据行的ValidationStatus实际上是,仍然是 ' Failed '),然后加入viw_SYSTEM_USER_VALIDATION,确保只选择带有MAX(DateCreated)值的行(当然,对于相同的数据行和业务规则)。

祝你好运,如果你在解决这个问题时发现了其他问题,请在这里和我们大家分享你的经验。

最后,如果您发现这是有用的,请记住将其标记为:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51187418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档