TSQL список бизнес-правил в MDS - PullRequest
0 голосов
/ 05 июля 2018

Мне нужна помощь с запросом моих бизнес-правил в SQL!

Я создал пару бизнес-правил в веб-службе MDS для проверки моих основных данных и обнаружил, что 2% моих данных не соответствуют правилам. Теперь я создал представление подписки SQL, чтобы сообщить о неверных данных в PowerBI. В своем отчете PowerBI мне нужно сообщить бизнес-пользователю, почему данные недействительны, но я не могу, так как представление подписки говорит только о том, где данные недействительны, но не почему данные недействительны. Поэтому мне нужно знать, как я могу запросить свои бизнес-правила из базы данных MDS в SQL и сопоставить их с моей моделью данных PowerBI. Есть ли способ запросить список бизнес-правил из базы данных MDS?

1 Ответ

0 голосов
/ 06 июля 2018

ОК, так что есть несколько способов сделать это. Вот несколько решений, пожалуйста, выберите подходящее для вашего сценария.

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]

Примечание: Проблема в вашем сценарии, я думаю, будет состоять в том, что в представлении подписки сущности нет идентификаторов точных бизнес-правил, которые не были выполнены. Так что я не уверен, как вы будете связывать эти 2 вместе (неудачные строки -> Список бизнес-правил). Также помните, что в каждой строке может быть более одного бизнес-правила, которое не удалось.

2. используя View 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).
  • Также обратите внимание, что одна и та же строка с ошибочными данными будет отображаться здесь несколько раз, если несколько бизнес-правил в одной и той же строке не прошли проверку (будут разные BusinessRuleID / Name и т. Д.). Просто кое-что, чтобы принять к сведению.
  • Аналогичным образом, одна и та же строка может появляться несколько раз, если она снова и снова не выполнялась в разное время. Чтобы обойти это, и если ваш итоговый отчет может с этим справиться, добавьте предложение WHERE в столбец DateCreated, чтобы вы могли видеть только те строки, которые не были выполнены сегодня. Закомментированная строка кода <--CAST(DateCreated as DATE) = CAST(GETDATE() as DATE) AND> делает то же самое. Если вы не можете использовать это, просто убедитесь, что строка данных различна. Однако, если вы сделаете это, помните, что если что-то не удалось вчера (и все еще находится в состоянии сбой), оно может не отображаться.

Я бы предложил использовать слегка модифицированную версию решения № 2:

Получите список ошибочных строк в представлении подписки (ValidationStatus строки данных на самом деле все еще 'Failed' ), затем присоединитесь к viw_SYSTEM_USER_VALIDATION, убедившись, что вы выбрали только строка со значением MAX(DateCreated) (конечно, для той же строки данных и бизнес-правила).

Желаю удачи, и если вы найдете что-то еще при решении этой проблемы, поделитесь своими знаниями здесь со всеми нами.

Наконец, если вы нашли это полезным, пожалуйста, не забудьте пометить его как ответ:)

...