我需要帮助查询我的业务规则在SQL!
我在MDS web服务中创建了几个业务规则来验证我的主数据,发现我的数据中有2%不符合这些规则。现在,我已经创建了一个subscription视图来报告PowerBI中的无效数据。在我的PowerBI报告中,我需要告诉业务用户为什么数据无效,但是我不能,因为订阅视图只告诉数据在哪里无效,而不是为什么数据无效。因此,我需要知道如何从SQL中的MDS数据库查询业务规则,并将其映射到我的PowerBI数据模型中。是否有方法从MDS数据库查询业务规则列表?
发布于 2018-07-05 21:13:07
好的,有很多种方法可以这样做。这里有一些解决方案,请选择一个适合您的方案。
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]注意:我认为,在您的场景中,的挑战是实体的订阅视图没有确切的失败业务规则的I。因此,我不知道您将如何将这2(失败的行->业务规则列表)联系在一起。还请记住,每行可能有多个失败的业务规则。
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_ID、Entity_ID和Member_ID/MemberCode来标识失败的特定模型、实体和行。
列BusinessRuleName、ConditionText & ActionText将向您的用户提供有关失败的业务规则的其他信息。
注:
DateCreated)。<--CAST(DateCreated as DATE) = CAST(GETDATE() as DATE) AND>也会这样做。如果不能使用,只需确保数据行是不同的。但是,如果您这样做,请记住,如果昨天发生了故障(并且仍然处于失败状态),则可能不会出现。我的建议是使用稍微修改过的解决方案#2:
从订阅视图中获取失败行的列表(数据行的ValidationStatus实际上是,仍然是 ' Failed '),然后加入viw_SYSTEM_USER_VALIDATION,确保只选择带有MAX(DateCreated)值的行(当然,对于相同的数据行和业务规则)。
祝你好运,如果你在解决这个问题时发现了其他问题,请在这里和我们大家分享你的经验。
最后,如果您发现这是有用的,请记住将其标记为:)
https://stackoverflow.com/questions/51187418
复制相似问题