Forum Discussion

houston39's avatar
houston39
Helper I
6 years ago

Adaptive Insight Connector

Hi - I am curious if anyone has a custom connector to Adaptive Insights?  I have been waiting too long for Microsoft to come up with a solution.

21 Replies

  • There isn't one, but depending on your login credetials you may be able to create it in power query. This does not work if using Azure Active Directory

    ---------------------------------------------------------

    I recently was able to connect Power BI to our Adaptive instance using the attached pdf as guidance.  You probably need to tweak this for Tableau.  The only tweak I had to do to the xml section was to double the "double quotes".  The rest of the code are Power BI specific code (M Language).

     

    let

        Source = Xml.Tables(

            Web.Contents("https://api.adaptiveinsights.com/api/v14",

                [Content = Text.ToBinary("<?xml version='1.0' encoding='UTF-8'?>

                    <call method=""exportData"" callerName=""PowerBI"">

                        <credentials login=""user name here"" password=""password here"" instanceCode=""instance code here""/>

                        <version name=""Forecast""/>

                        <format useInternalCodes=""true"" includeUnmappedItems=""false""/>

                        <filters>

                            <accounts>

                                <account code=""Expenses"" isAssumption=""false"" includeDescendants=""true""/>

                            </accounts>

                            <timeSpan start=""Jan-2018"" end=""Dec-2019""/>

                        </filters>

                       

                        <dimensions>

                            <dimension name=""Project Allocation""/>

                        </dimensions>

     

                        <rules includeZeroRows=""false"" includeRollups=""false"" markInvalidValues=""false"" markBlanks=""false"" timeRollups=""false"">

                            <currency useCorporate=""false"" useLocal=""false"" override=""USD""/>

                        </rules>

                    </call>")

                ])),

        CSV = Table.SelectColumns(Source,{"output"}),

        #"Split Column by Delimiter (Rows)" = Table.ExpandListColumn(Table.TransformColumns(CSV, {{"output", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "output"),

        #"Split Column by Delimiter1" = Table.SplitColumn(#"Split Column by Delimiter (Rows)", "output", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"output.1", "output.2", "output.3", "output.4", "output.5", "output.6", "output.7", "output.8", "output.9", "output.10", "output.11", "output.12", "output.13", "output.14", "output.15", "output.16", "output.17", "output.18", "output.19", "output.20", "output.21", "output.22", "output.23", "output.24", "output.25", "output.26", "output.27", "output.28", "output.29", "output.30", "output.31", "output.32", "output.33", "output.34", "output.35", "output.36", "output.37", "output.38", "output.39", "output.40", "output.41", "output.42", "output.43", "output.44", "output.45", "output.46", "output.47", "output.48", "output.49", "output.50", "output.51", "output.52"}),

        #"Promoted Headers" = Table.PromoteHeaders(#"Split Column by Delimiter1", [PromoteAllScalars=true]),

        #"Removed Other Columns" = Table.SelectColumns(#"Promoted Headers",{"Account Name", "Account Code", "Level Name", "Project Allocation", "Jan-2018", "Feb-2018", "Mar-2018", "Apr-2018", "May-2018", "Jun-2018", "Jul-2018", "Aug-2018", "Sep-2018", "Oct-2018", "Nov-2018", "Dec-2018", "Jan-2019", "Feb-2019", "Mar-2019", "Apr-2019", "May-2019", "Jun-2019", "Jul-2019", "Aug-2019", "Sep-2019", "Oct-2019", "Nov-2019", "Dec-2019"}),

        #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Removed Other Columns", {"Account Name", "Account Code", "Level Name","Project Allocation"}, "Attribute", "Value"),

        #"Renamed Columns" = Table.RenameColumns(#"Unpivoted Other Columns",{{"Attribute", "Period"}}),

        #"Filtered Rows1" = Table.SelectRows(#"Renamed Columns", each [Value] <> "0.0"),

        #"Sorted Rows" = Table.Sort(#"Filtered Rows1",{{"Value", Order.Ascending}}),

        #"Changed Type" = Table.TransformColumnTypes(#"Sorted Rows",{{"Period", type date}, {"Value", type number}}),

        #"Calculated End of Month" = Table.TransformColumns(#"Changed Type",{{"Period", Date.EndOfMonth, type date}}),

        #"Added Account Column" = Table.AddColumn(#"Calculated End of Month", "Account", each Text.Start([Account Code], 5), type text),

        #"Changed Type1" = Table.TransformColumnTypes(#"Added Account Column",{{"Account", Int64.Type}}),

        #"Removed Errors" = Table.RemoveRowsWithErrors(#"Changed Type1", {"Account"}),

        #"Added Dept Column" = Table.AddColumn(#"Removed Errors", "Dept", each Text.Start([Level Name], 6), type text),

        #"Added Version Column" = Table.AddColumn(#"Added Dept Column", "Version", each "Current Forecast"),

        #"Changed Type2" = Table.TransformColumnTypes(#"Added Version Column",{{"Account", type text}, {"Version", type text}})

    in

        #"Changed Type2"

    • houston39's avatar
      houston39
      Helper I

      Hi - I do not see a .pdf file attached?  Thank you..

    • keeganm's avatar
      keeganm
      Frequent Visitor

      I was able to use this coding to get my connection to work. The one issue I am having is the time span is not filtering. I end up with every month of the version I am pulling.

      • rtaylor's avatar
        rtaylor
        Helper III

        That shouldbn't be a problem though right? You should be able to use power query and filter the dates you need after your api request is complete.

    • Anonymous's avatar
      Anonymous
      Not applicable

      I cannot get the code to work.  I have updated the credentials but I'm unsure of what other edits I need to make.  Could you help me out?  Is it possible to share updated code, perhaps to the current version API code where you highlight the places edits are necessary?  

      Any help, much appreciated.

      • Anonymous's avatar
        Anonymous
        Not applicable

        Anonymous ,

         

        Please make sure you have correctly replaced the underlined items below with what theyare for your Adaptive instance/configuration.  Also, please note the use of double "double quotes" here.  ("" instead of ")

         

           <call method=""exportData"" callerName=""PowerBI"">

                            <credentials login=""user name here"" password=""password here"" instanceCode=""instance code here""/>

                            <version name=""Forecast""/>

                            <format useInternalCodes=""true"" includeUnmappedItems=""false""/>

                            <filters>

                                <accounts>

                                    <account code=""Expenses"" isAssumption=""false"" includeDescendants=""true""/>

                                </accounts>

                                <timeSpan start=""Jan-2018"" end=""Dec-2019""/>

                            </filters>

                           

                            <dimensions>

                                <dimension name=""Project Allocation""/>

                            </dimensions>

         

        Regards,

         

        Ferdinand

  • Rabi's avatar
    Rabi
    Resolver I

    Hello Everyone, 

     

    I am glad to let you know all. I was sucessfully able to connect to Adaptive via the XML query.

    Let me know if you would like to learn on how to configure the query.

     

    Regards,

    Rabi

    • owen-carnes-sps's avatar
      owen-carnes-sps
      Frequent Visitor

      Did you connect to Adaptive just through PowerBI, or through a Fabric Pyspark Notebook?

      • Rabi's avatar
        Rabi
        Resolver I

        Its just through Power BI. Let me know if you want the sample query.