Forum Discussion

dphillips's avatar
dphillips
Icon for Helper IV rankHelper IV
3 years ago
Solved

Best practice for splitting columns with multiple, comma separated values

Just completed a survey with some students getting their feedback on wide reading. For 3 of the columns they were allowed to select multiple answers. See image below.   No problems spitting t...
  • Anonymous's avatar
    Anonymous
    3 years ago

    Hi dphillips , great question.  Can I suggest that you Unpivot questions into rows, then split:

     

    From:

    To:

    Here is the example code:

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUUrUUUjSUUgGsip0FCp1FKqALEMdBSOlWJ1oJSdCCpwJKXDBqyAWAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Student = _t, #"Question 1" = _t, #"Question 2" = _t, #"Question 3" = _t]),
        #"Unpivoted Columns" = Table.UnpivotOtherColumns(Source, {"Student"}, "Attribute", "Value"),
        #"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Unpivoted Columns", {{"Value", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Value"),
        #"Trimmed Text" = Table.TransformColumns(#"Split Column by Delimiter",{{"Value", Text.Trim, type text}})
    in
        #"Trimmed Text"

    I would add a dimension tables for Student and Questions.  You can use CALCULATE( exp , KEEPFILTERS( Question = 1 ) ) in your DAX functions.