Forum Discussion
Adaptive Insight Connector
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"
- houston396 years ago
Helper I
Hi - I do not see a .pdf file attached? Thank you..
- rtaylor6 years ago
Helper III
I must not have access to attach a file. Here is the website
https://knowledge.adaptiveplanning.com/Integration/Managing_Data_Integration/API_Documentation
- houston396 years ago
Helper I
Thank you!
- keeganm6 years agoFrequent 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.
- rtaylor6 years ago
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.
- keeganm6 years agoFrequent Visitor
You can, it just not as efficent. I am using version 23 of the API and I found instead of using Jan-2020 I had to use 01/2020.
- Anonymous5 years agoNot 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.
- Anonymous5 years agoNot 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
- jordancole05175 years ago
Helper I
Hello!
Hopefully this message makes it to you even though this is an old topic! Classics never go out of style, though.
I'm trying to get this to work but am getting the error below after entering in the code (changed as advised). Any ideas?
"Expression.Error: The column 'Output' of the table wasn't found.
Details:
Output"THANK YOU!!
- Anonymous3 years agoNot applicable
hello,
I followed the steps above but without the M code after the line in CSV = Table.SelectColumns(Source,{"output"}). Power query returns a message "Illegal Input. Input data must be an XML document." and "invalid-xml". Is it because i did not specify which table to export the XML data to? Do i need to create a table call "Output" with output columns 1 to 52?
Thanks for your help
- venusbug3 years agoRegular Visitor
Have you managed to figure out? I've got the same error as you.
- keeganm3 years agoFrequent Visitor
Yes the output is a essiesitial piece, this takes the data and puts it into a csv file that Power BI can then dissect. I would recommend copying all the steps and then delete the steps that you don't want to use. This connection is a little old now, so you really only need the steps down to Promote Headers. A couple other things to note:
1. Adaptive is now on version 35 of the API so version 14 may not work
2. Instead of "Include Rollups" you will want to use the following, <rules includeZeroRows=""true"" includeRollupAccounts=""false"" includeRollupLevels=""false"" markInvalidValues=""false"" markBlanks=""false"" timeRollups=""false"">
3. I found that I had to change the timespan to <timeSpan start=""05/2020"" end=""05/2020""/>
4. Make sure to save your power bi file in a secure location since you will have a password saved into the code.
Hope this helps
- jordancole05173 years ago
Helper I
I've tried to do many of the various suggestions but still coming up short. This would be such a game changer if it worked. Can somebody run the code below and update their credentials, please? It'd help me rule out the privacy / credentials issue on my end.
let
Source = Xml.Tables(
Web.Contents("https://api.adaptiveinsights.com/api/v35",
[Content = Text.ToBinary("<?xml version='1.0' encoding='UTF-8'?>
<call method=""exportData"" callerName=""PowerBI"">
<credentials login=""username"" password=""password"" instanceCode=""instance""/>
<version name=""Version""/>
<format useInternalCodes=""true"" includeUnmappedItems=""false""/>
<filters>
<accounts>
<account code=""Expenses"" isAssumption=""false"" includeDescendants=""true""/>
</filters>
<rules includeZeroRows=""true"" includeRollupAccounts=""false"" includeRollupLevels=""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])
in
#"Promoted Headers"I'm still getting the same error:
Expression.Error: The column 'output' of the table wasn't found.
Details:
outputAttached is what my PowerQuery view looks like after pasting in the code.