在查询SQL中的业务规则时我需要帮助!
我已经在MDS Web服务中创建了几个业务规则来验证我的主数据,发现我的数据中有2%不符合规则。现在,我已经创建了一个SQL订阅视图,以报告PowerBI中的无效数据。在我的PowerBI报告中,我需要告诉业务用户为什么数据无效,但是我不能告诉用户,因为订阅视图仅表明数据无效的地方,而不是为什么数据无效的原因。因此,我需要知道如何从SQL中的MDS数据库查询业务规则,并将其与PowerBI数据模型进行映射。有没有一种方法可以从MDS数据库查询业务规则列表?
答案 0 :(得分:0)
好的,因此有多种解决方法。这是一些解决方案,请选择一种适合您的方案。
以下查询将检索在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。因此,我不确定您如何将这两个捆绑在一起(失败行->业务规则列表)。还请记住,每一行可能有多个失败的业务规则。
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实际上是静止 “失败” ),然后使用viw_SYSTEM_USER_VALIDATION
进行联接您只需选择具有MAX(DateCreated)
值的行(当然,对于同一数据行和业务规则)。
祝您好运,如果您在解决此问题时发现任何其他问题,请与我们所有人分享您的学习经验。
最后,如果您发现此功能有用,请记住将其标记为答案:)