Forum Discussion

JarmoAhosola's avatar
JarmoAhosola
New Member
3 years ago
Solved

Preventing hostile self service reporting on privacy sensitive data

The root problem I have is to provide self service reporting on privacy sensitive data and prevent hostile attempts to breech privacy by filtering. The data set has low amounts of data which would make report complately useless if distributions does not show small amounts.

 

My aim is to show small amounts only as part of distribution which is big enough and as reporting is self service, the problem need to be addressed at measure, not at the report.

 

Basically what I need is to hide all data that would have row total or column total at visual less than limit constant in case data is not hidden. And that recardless of axis and filter chosen at report. I would start the idea from something like:

my_protected_measure =

  VAR unprotected_measure = ...

  VAR column_total =

    CALCULATE(

      unprotected_measure,

      REMOVEFILTERS(current visual row dimension)

    )

  VAR row_total =

    CALCULATE(

      unprotected_measure,

      REMOVEFILTERS(current visual column dimension)

    )

  RETURN IF(AND(row_total >= 5, column_total >= 5), unprotected_measure, BLANK())

 

How can I refer to current visual row and column dimensions at the measure?

 

If that is not possible, is there some out-of-the-box solution for handling privacy data at self service reporting?

  • Anonymous's avatar
    Anonymous
    3 years ago

    Hi  JarmoAhosola ,

    I created some data:

    Do you want to implement the filtering of a single value in the matrix, this may not be possible, in the matrix either filter the entire column, or filter the entire row, if filtered to a single value, it will form a Blank.

    Here are the steps you can follow:

    Create measure.

    Flag1 =
    IF(
        HASONEVALUE('Table'[Date])&&SUMX(FILTER(ALL('Table'),'Table'[Date]=MAX('Table'[Date])),[Value])>=20,MAX('Table'[Value]),BLANK())
    Flag2 =
    IF(
        HASONEVALUE('Table'[Group])&&SUMX(FILTER(ALL('Table'),'Table'[Group]=MAX('Table'[Group])),[Value]) >=35,MAX('Table'[Value]),BLANK())

     

    Best Regards,

    Liu Yang

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly

1 Reply

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi  JarmoAhosola ,

    I created some data:

    Do you want to implement the filtering of a single value in the matrix, this may not be possible, in the matrix either filter the entire column, or filter the entire row, if filtered to a single value, it will form a Blank.

    Here are the steps you can follow:

    Create measure.

    Flag1 =
    IF(
        HASONEVALUE('Table'[Date])&&SUMX(FILTER(ALL('Table'),'Table'[Date]=MAX('Table'[Date])),[Value])>=20,MAX('Table'[Value]),BLANK())
    Flag2 =
    IF(
        HASONEVALUE('Table'[Group])&&SUMX(FILTER(ALL('Table'),'Table'[Group]=MAX('Table'[Group])),[Value]) >=35,MAX('Table'[Value]),BLANK())

     

    Best Regards,

    Liu Yang

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly