Forum Discussion

poweringthru's avatar
poweringthru
Helper I
3 years ago

Create new table based on JSON column using DAX

I have the following table (result column is calculated so I can't do it in Power Query):

 

resulttotalElements
{"document":"110","totalElements":"3","list":[{"id":"1","items":"35"},{"id":"5","items":"20"},{"id":"9","items":"70"}]}3
{"document":"117","totalElements":"2","list":[{"id":"2","items":"10"},{"id":"4","items":"5"}]}2
{"document":"123","totalElements":"2","list":[{"id":"13","items":"20"},{"id":"17","items":"45"}]}2
{"document":"131","totalElements":"4","list":[{"id":"23","items":"65"},{"id":"27","items":"20"},{"id":"29","items":"15"},{"id":"32","items":"55"}]}4
{"document":"144","totalElements":"5","list":[{"id":"36","items":"5"},{"id":"37","items":"15"},{"id":"39","items":"25"},{"id":"41","items":"55"},{"id":"42","items":"25"}]}5


The new table, using DAX, should look like this:

 

documenttotalElementsiditems
1103135
1103520
1103970
1172210
117245
12321320
12321745
13142365
13142720
13142915
13143255
1445365
14453715
14453925
14454155
14454225

 

How can I define the new table?

 

Thanks in advance!

4 Replies

  • ppm1's avatar
    ppm1
    Solution Sage

    Just curious. What does the data look like before? How did you generate the JSON column? It may be easier to start from the original column(s).

     

    Pat

    • poweringthru's avatar
      poweringthru
      Helper I

       result comes from a table where it can have multiple different structures, in this calculated table it has been filtered down to only being this string structure.

      Maybe I can create the table in Power Query and parse it there?

      • ppm1's avatar
        ppm1
        Solution Sage

        Doing it in Power Query would be much easier. You could use Json.Document to parse it.

         

        Pat

  • I know I should probably replace delimiters:

     

    SUBSTITUTE([Element], """,""", "|")

     

    To use the PATH functions, but I'm clueless on how to go then row by row and create a whole new table.