Forum Discussion

kattlees's avatar
kattlees
Icon for Post Patron rankPost Patron
7 years ago
Solved

Need help on how to set up database

I am struggling with how to organize the data from the database I can connect to and wondering if someone has any suggestions.  I have attached some sample data

 

The database has 8 columns with answers to form questions. Each answer is it's own line. I need to pivot the table so it is one line with the answers all one one line based on the formcode-seq. The issue I am running into is if a mistake is made on an answer and the person goes back and fixes it, there are two lines with the same answer code and I only need the LAST answer. In the sample data - the code Stop1 has two answers for the same form-seq.
Then the date should be the date from the first entry on that form.

 

  • ImkeF's avatar
    ImkeF
    7 years ago

    Hi kattlees ,

    this code should do if your data is not too large:

     

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("rdNRa4MwEAfwryI+C96lxuR8dg/tViZzb6UP0gYsrComfv9FNphp52xkL+FIyI/Lkf/hEDIuhYAwCrHo2xPaAmQMFDNACoAyEHbraV9kDAWRrRlKuz6/kBxPxgvF0J/qSqtzoIeu+7goHR6jqazNPl8ll9eLqaNg19bNHVm+ryLzVlmwapQL5pVRD3l040kgu+dafdvdWzxdtIgnrrRt3q7rukrAlV4H8z8tFdWg102KAF2qNCvnhMTZ75SMcfMl4SZDuJUYLD1vmgKEbyrN4IciPtZMTD8W80yBn/xQCvzI5RT4eRLhjxT4WZgizMbAl4LZHPhKCZ8PgndXM9/XnxLMtnX8BA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [customer = _t, code = _t, #"Entry Date Time" = _t, nurse = _t, seq = _t, formcd = _t, formseq = _t, ans = _t]),
        ChangeType = Table.TransformColumnTypes(Source,{{"customer", Int64.Type}, {"code", type text}, {"Entry Date Time", type text}, {"nurse", type text}, {"seq", Int64.Type}, {"formcd", type text}, {"formseq", Int64.Type}, {"ans", type text}}),
        #"Sorted Rows" = Table.Buffer(Table.Sort(ChangeType,{{"Entry Date Time", Order.Descending}})),
        #"Removed Duplicates" = Table.Distinct(#"Sorted Rows", {"customer", "code", "formcd", "formseq"}),
        #"Changed Type with Locale" = Table.TransformColumnTypes(#"Removed Duplicates", {{"Entry Date Time", type datetime}}, "en-US"),
        #"Changed Type1" = Table.TransformColumnTypes(#"Changed Type with Locale",{{"Entry Date Time", type date}}),
        #"Removed Columns" = Table.RemoveColumns(#"Changed Type1",{"Entry Date Time", "nurse", "seq"}),
        #"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[code]), "code", "ans"),
        #"Merged Queries" = Table.NestedJoin(#"Pivoted Column", {"customer", "formcd", "formseq"}, #"Changed Type1", {"customer", "formcd", "formseq"}, "Pivoted Column", JoinKind.LeftOuter),
        #"Added Custom" = Table.AddColumn(#"Merged Queries", "Date", each List.Min([Pivoted Column][Entry Date Time])),
        #"Removed Columns1" = Table.RemoveColumns(#"Added Custom",{"Pivoted Column"})
    in
        #"Removed Columns1"

     

12 Replies

  • RobbeVL's avatar
    RobbeVL
    Icon for Impactful Individual rankImpactful Individual

    Hi there,

     

    Could you please copy your data in here so I can model it for you ?

     

    Regards,

     

    robbe

    • kattlees's avatar
      kattlees
      Icon for Post Patron rankPost Patron

      Thanks so much. I am open to any ideas.

       

      customercodeEntry Date Timenurseseqformcdformseqans
      2587701Proc18/9/2019 9:07EMP:21799218KL9871Purchased supplies
      2587701stMD18/9/2019 9:07EMP:21799218KL9871Smith, John
      2587701stST18/9/2019 9:07EMP:21799218KL9871Doe, Jane
      258770Date18/9/2019 9:07EMP:21799219KL9871080919
      258770Drop18/9/2019 9:56EMP:21799219KL98710954
      258770InRm18/9/2019 9:07EMP:21799219KL98710840
      258770Out18/9/2019 9:56EMP:21799219KL98710954
      258770Pause18/9/2019 9:07EMP:21799219KL98710901
      258770Stop18/9/2019 9:56EMP:21799219KL987101952
      258770Stop18/13/2019 13:10EMP:21799220KL98710954
      2587701Proc18/10/2019 16:00EMP:21950278KL9872Purchased supplies
      2587701stMD18/10/2019 16:00EMP:21950278KL9872Smith, John
      2587701stST18/10/2019 16:00EMP:21950278KL9872Doe, Jane
      258770Date18/10/2019 16:00EMP:21950278KL9872081019
      258770Drop18/10/2019 16:00EMP:21950278KL98721610
      258770InRm18/10/2019 16:00EMP:21950278KL98721600
      258770Out18/10/2019 16:00EMP:21950278KL98721645
      258770Pause18/10/2019 16:00EMP:21950278KL98721602
      258770Stop18/10/2019 16:00EMP:21950278KL98721725
      • RobbeVL's avatar
        RobbeVL
        Icon for Impactful Individual rankImpactful Individual

        1 More thing.
        How do you identify a mistake correction? --> 2 times the same value in a row?
        What is the nurse field? should be taken into account?

         

        ImkeF  Helped me with some advanced M query in the past. If you're lucky she will have a look here! :)