Forum Discussion

ChoiJunghoon's avatar
ChoiJunghoon
Icon for Helper III rankHelper III
5 years ago
Solved

Create the new table with DAX considering Space.

Hello. 
Can Dax create the below the table ? 

TableA

SpaceNumber
3

 

TableB

CategorySpaceNumberCycle
A15
B25
C34
D14
E23
F34
G14
H25
I33

 

ResultTable

CategorySpaceNumberCycleIndex
A11
A12
A13
A14
A15
B21
B22
B23
B24
C31
C32
C33
C34
D16
D17
D18
D19
E26
E27
E28
F35
F36
F37
F38
G110
G111
G112
G113
H29
H210
H211
H212
H213
I39
I310
I311

 

  • Not DAX, but yes to power query. 
    load table B to PQ

    add a new column that creates a a list from 1 to the value in number cycle. It would look something like this. 

    ={1..[NumberCycle]}

    this will give a column  containing lists. You should be able to expand this column into new rows. 

  • Anonymous's avatar
    Anonymous
    5 years ago
    define table
        TableB =
            DATATABLE(
                "Category", STRING,
                "SpaceNumber", INTEGER,
                "Cycle", INTEGER,
                {
                    {"A", 1, 5},
                    {"B", 2, 4},
                    {"C", 3, 4},
                    {"D", 1, 4},
                    {"E", 2, 3},
                    {"F", 3, 4},
                    {"G", 1, 4},
                    {"H", 2, 5},
                    {"I", 3, 3}
                }
            )
    EVALUATE
    SELECTCOLUMNS(
        GENERATE(
            TableB,
            var Cycle_ = TableB[Cycle]
            var SpaceNumber_ = TableB[SpaceNumber]
            var Category_ = TableB[Category]
            var CycleIndexStart = 
                1 + SUMX(
                    filter(
                        TableB,
                        TableB[SpaceNumber] = SpaceNumber_
                        &&
                        TableB[Category] < Category_
                    ),
                    TableB[Cycle]
                )
            var CycleIndex_ =
                GENERATESERIES(
                    CycleIndexStart,
                    CycleIndexStart + Cycle_ - 1, 1
                )
            return
                CycleIndex_
        ),
        "Category", TableB[Category],
        "SpaceNumber", TableB[SpaceNumber],
        "CycleIndex", [Value]
    )

    Execute this code in DAX Studio... By the way, your result table from above has mistakes in it. Mine seems to work correctly.

2 Replies

  • MattAllington's avatar
    MattAllington
    Icon for Community Champion rankCommunity Champion

    Not DAX, but yes to power query. 
    load table B to PQ

    add a new column that creates a a list from 1 to the value in number cycle. It would look something like this. 

    ={1..[NumberCycle]}

    this will give a column  containing lists. You should be able to expand this column into new rows. 

  • Anonymous's avatar
    Anonymous
    Not applicable
    define table
        TableB =
            DATATABLE(
                "Category", STRING,
                "SpaceNumber", INTEGER,
                "Cycle", INTEGER,
                {
                    {"A", 1, 5},
                    {"B", 2, 4},
                    {"C", 3, 4},
                    {"D", 1, 4},
                    {"E", 2, 3},
                    {"F", 3, 4},
                    {"G", 1, 4},
                    {"H", 2, 5},
                    {"I", 3, 3}
                }
            )
    EVALUATE
    SELECTCOLUMNS(
        GENERATE(
            TableB,
            var Cycle_ = TableB[Cycle]
            var SpaceNumber_ = TableB[SpaceNumber]
            var Category_ = TableB[Category]
            var CycleIndexStart = 
                1 + SUMX(
                    filter(
                        TableB,
                        TableB[SpaceNumber] = SpaceNumber_
                        &&
                        TableB[Category] < Category_
                    ),
                    TableB[Cycle]
                )
            var CycleIndex_ =
                GENERATESERIES(
                    CycleIndexStart,
                    CycleIndexStart + Cycle_ - 1, 1
                )
            return
                CycleIndex_
        ),
        "Category", TableB[Category],
        "SpaceNumber", TableB[SpaceNumber],
        "CycleIndex", [Value]
    )

    Execute this code in DAX Studio... By the way, your result table from above has mistakes in it. Mine seems to work correctly.