AbsaOSS / AbsaOSS/enceladus

Case Clauses for Mapping Rules

未关闭
#188 1 条评论 0 个 reaction 已指派 1 人 已被 @Zejnilovic 认领 在 GitHub 查看
Conformance feature Menas priority: undecided request under discussion
主要语言
Scala
星标
33
派生
16
PR 合并指标
30 天内没有已合并 PR

描述

## Background
Currently, we have no functionality to do case clauses in the Menas UI:

The types of rules that require this functionality have been done through the API rather than the UI but we have gotten more requests for this to be a functionality in the UI.
## Problem
Some use cases need to do apply a case clause before being able to do a mapping rule.
### Example:
There is a dataset that holds client keys that are either an Source1 or Source2 in the same column.
When trying to conform this against a mapping table the joins would be as follows:

*Mapping Table : Dataset*
SourceSystem : SourceSystem (Needs to be a literal - either Source1 or Source2)
SystemCode : ClientKey

Currently, it is not possible to have both Source2 and Source1 as the literal so we would only be able to conform against Source1 or Source2 but not both.

## Proposed Solution
1. Dynamic Literal -
CASE
WHEN LEN(ClientKey) = 6 THEN “source1”
ELSE CASE
WHEN LEN(ClientKey) = 10 THEN “source2”
ELSE “UNKNOWN” END END
2. Extra Clause in Join Condition -
*Mapping Table : Dataset*
SourceSystem : in ("source1","source2")
SystemCode : ClientKey
3. Filter Mapping Table Before Executing Join -
*Mapping Table Filter Condition*
SELECT($"MappingTable.SourceSystem".isin("source1","source2"))

[Example](https://app.zenhub.com/files/154513089/6c6fdbd7-c48c-4b28-a9da-66f98821fd12/download)

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。