Forum Discussion

bodaypal's avatar
bodaypal
Regular Visitor
8 years ago

Dynamic column value based on MEASURE (not Slicer)

 Hi there,

 

I am looking for a solution for the following problem.

I would like to create a new column to a table that takes its values as a condition based on a measure. I know, I can be solve it with slicer by unpivoting all dimensions to one table but my source table should be refreshed quite often and I do not want to make this unpivot stuff every time.

 

So the example, I have a table named e.g. EMPLOYEES:

 

IDGENDERAGE_GOURPEDUCATIONNO_PEOPLE
1M20-30primary12
2F30-40secondary23
3M30-40primary12
4F20-30tertiary24
5F40-50secondary32
6M40-50primary21
7M20-30tertiary32
8F30-40secondary12
9F20-30tertiary32
10F40-50primary14

 

I have an other table named Dimensions

 

DIMENSIONS
GENDER
AGE_GOURP
EDUCATION

 

I can create a measure FILTEREDED_DIM that takes its values by selecting (filtering) an element from 'Dimensions'[DIMENSIONS] 

 

let's say

FILTERED_DIM = if(
ISCROSSFILTERED('Dimensions'[DIMENSIONS]);
FIRSTNONBLANK('Dimensions'[DIMENSIONS];
""))

 

I would like to create a new column to the table EMPLOYEES e.g. CHOSEN_DIM that takes its values based on the value of the measure FILTERED_DIM

 

something like this: 

CHOSEN_DIM = IF(
[FILTERED_DIM]="AGE_GROUP";'Employees'[AGE_GOURP];
     if([FILTEREDED_DIM]="EDUCATION";'Employees'[EDUCATION];
     'Employees'[GENDER]
     )

)

 

It results always as false...

 

Do you have any idea, work arround? Or even the idea is not suited for PBI, that is why I did not find any solution already. If so, any idea on how to recreate automatically my unpivoted table.

 

Thanks

Pal

2 Replies

  • v-yuta-msft's avatar
    v-yuta-msft
    Community Support

    Hi bodaypal,

     

    Firstly, your requirement seems like to achieve a dynamic calculate column based on measure(or slicer), right? Unfortunately, power no doesn't support dynamic calculate column. You should use measure instead of calculate column.

    Secondly, there's no relationship between ‘DIMENSIONS’ and 'EMPLOYEES', you should create a column in both table so that you can build a relationship between two tables. Then you can use measure in 'DIMENSIONS' to filter 'EMPLOYEES'.

     

    Regards,

    Jimmy Tao

    • bodaypal's avatar
      bodaypal
      Regular Visitor

      Dear Jimmy Tao,

       

      Thanks for your reply. I might not be clear.

       

      My original problem was to choose a column dynamically. Following my example I wanted to create a bar chart of sum(PEOPLE_NO) by GENDER than choose the dimension (AGE_GROUP) from a list or so and than my visual would turn to sum(PEOLPLE_NO) by AGE_GROUP.

       

      Well I know a solution for that by creating a table (by unpivoting the original) with 3 columns 1. ID, 2. all dimensions, and 3. all dimension vaules. With that you can make the relations and it works nicely. It is explained e.g. here better :) http://www.leanx.eu/tutorials/dynamic-dimensions-in-power-bi

       

      BUT I wanted something easier, less tables, less data, less preparation. Following my example. I wanted to create a column based on the value of the measure FILTERED_DIM. If I chose "AGE_GROUP" some calculation would create a new column [CHOSEN_DIM] with the values of [AGE_GROUP]. Then I can use this column in my visuals.

       

       You advised me to use a measure instead of column, but I think for this I need a column not a measure.

       

      ID

      GENDER

      AGE_GOURP

      EDUCATION

      NO_PEOPLE

      CHOSEN_DIM

      1

      M

      20-30

      primary

      12

      20-30

      2

      F

      30-40

      secondary

      23

      30-40

      3

      M

      30-40

      primary

      12

      30-40

      4

      F

      20-30

      tertiary

      24

      20-30

      5

      F

      40-50

      secondary

      32

      40-50

      6

      M

      40-50

      primary

      21

      40-50

      7

      M

      20-30

      tertiary

      32

      20-30

      8

      F

      30-40

      secondary

      12

      30-40

      9

      F

      20-30

      tertiary

      32

      20-30

      10

      F

      40-50

      primary

      14

      40-50

       

      So, if I understood correctly, this is what, that is not possible in PBI.

       

      By the way I put an other question at the end „…any idea on how to recreate automatically my unpivoted table” and I find a solution by myself. If I create the unpivoted tables in query editor then in refresh it refreshes all the tables.

       

      thanks again

       

      Pal