如何校验层级关联父子列的x标记合规性?
层级规则校验PowerBI数据表合规性
需求说明
现有source数据表,各列取值仅为x或null;另有hierarchy层级表定义列之间的父子关系,需依据以下规则校验source表数据是否合规,不合规则输出错误的子节点→父节点路径:
- 若子列值为
x,则其所有父列值必须为x - 若父列值为
x,则其至少有一个子列值为x
示例代码(Power Query M语言)
source = Table.FromRecords({ [Name="Jason", A="x", B="x", C="x", D="x", E="x", F="x", G=null, H="x", I=null, J=null, K=null, L="x", M=null], [Name="Joe", A="x", B=null, C="x", D=null, E=null, F=null, G="x", H="x", I=null, J=null, K=null, L=null, M="x"], [Name="Eddie", A="x", B=null, C="x", D=null, E=null, F="x", G=null, H="x", I=null, J="x", K=null, L=null, M=null], [Name="Phil", A=null, B=null, C=null, D="x", E=null, F=null, G=null, H=null, I=null, J=null, K=null, L="x", M=null], [Name="Thomas", A="x", B=null, C=null, D=null, E=null, F="x", G="x", H="x", I=null, J=null, K=null, L=null, M=null], [Name="David", A="x", B=null, C=null, D=null, E="x", F="x", G=null, H=null, I=null, J=null, K=null, L=null, M=null], [Name="Matthew", A=null, B=null, C=null, D=null, E=null, F=null, G=null, H=null, I=null, J=null, K="x", L=null, M=null] }), hierarchy = Table.FromRecords({ [Column1 = "A", Hierarchy = {null}], [Column1 = "B", Hierarchy = {"A"}], [Column1 = "C", Hierarchy = {"A"}], [Column1 = "D", Hierarchy = {"A", "C"}], [Column1 = "E", Hierarchy = {"A", "C"}], [Column1 = "F", Hierarchy = {"A"}], [Column1 = "G", Hierarchy = {"A", "F"}], [Column1 = "H", Hierarchy = {"A", "F"}], [Column1 = "I", Hierarchy = {null}], [Column1 = "J", Hierarchy = {"I"}], [Column1 = "K", Hierarchy = {"I"}], [Column1 = "L", Hierarchy = {"I", "K"}], [Column1 = "M", Hierarchy = {"I", "K"}] }),
手动校验错误结果
- Jason:
- L→K→I(L为
x,但父列K、I均为null,违反规则1)
- L→K→I(L为
- Joe:
- G→F→A(G为
x,但父列F为null,违反规则1) - H→F→A(H为
x,但父列F为null,违反规则1) - M→K→I(M为
x,但父列K、I均为null,违反规则1)
- G→F→A(G为
- Eddie:
- J→I(J为
x,但父列I为null,违反规则1) - C→A(C为
x,但子列D、E均为null,违反规则2)
- J→I(J为
- Phil:
- D→C→A(D为
x,但父列C、A均为null,违反规则1) - L→K→I(L为
x,但父列K、I均为null,违反规则1)
- D→C→A(D为
- David:
- E→C→A(E为
x,但父列C为null,违反规则1) - F→A(F为
x,但子列G、H均为null,违反规则2)
- E→C→A(E为
- Matthew:
- B→A(B为
x,但父列A为null,违反规则1) - K→I(K为
x,但父列I为null,违反规则1)
- B→A(B为
内容的提问来源于stack exchange,提问作者SimplePowerBIUser
相关产品推荐
相关产品推荐

