Power BI error - The import Blackbaud.Contents matches no exports. Did you miss a module reference?

Options

I'm new to using the Power BI connector, and have a question about this error I'm encountering.

12247ca6344b61b83652b4c21e7f4399-huge-im
Power BI refresh data error

The error only occurs when when any of the table references on lines 574-597, the ones below the note on line 572 which reads “Categories that require individual calls per parent id - uncomment below to display in the data connector.”

4f908132a7c26d066b7e53fc014b627d-huge-im
Uncommenting any categories below this line breaks the connector

Uncommenting categories above that point in the code works as expected, but uncommenting categories below that point results in the error shown above when refreshing an existing .pbix file. It also results in the Blackbaud (Beta) connector disappearing completely in the Get Data interface.

Is any additional configuration necessary when these categories are enabled, or is something else going wrong here?

Comments

  • Hey @Jason Samuels,

    All of those are connectors to single call API endpoints. They can't fetch data in a paginated form like the other endpoints. If you want to use them, you'd need to write some custom M in your Power BI to pass in the required parameter to make the API call work. For example, this line gets the prospect status for each constituent (I know this is hard to see, but it's line 583ish on the source code)

    1a9c080c5ebb271607b4ace4157ceb09-huge-im

    The prospect endpoint is https://api.sky.blackbaud.com/constituent/v1/constituents/{constituent_id}/prospectstatus
    So you'd need to write a function that takes a list of constituent ID's and passes it into this endpoint and returns it as a table.

    Hope that helps!

  • @Matt Thacker thank you for the clarification. I'm still not understanding how I'd get to the point of writing that custom M script to make the API calls work when the Blackbaud (Beta) connector disappears from the list of connectors in the Get Data interface after uncommenting any of these categories.

    But this is also the point where I need to step back and acknowledge that the value we'd get from including these categories doesn't quite match up with the effort it would likely take to ramp up my technical skill with these tools to the point where I can implement it. Or in other words, the juice isn't worth the squeeze for me here. I really appreciate your response and hope this post helps provide clarity for others.

  • @Matt Thacker
    Hi Matt,

    We now do need to be able to use some of those endpoints. However we can't read the image you provided earlier. Using some of the examples in the PQ file, we tried to add the Name Format Summary endpoint. The error occurs in creating the expansion field which is generated by calling the LoadTableForSingleRec function in power query with the api endpoint. We've modeled it like similar apis in the file for aliases or assigned fundraisers, but they do not seem to work either. Any thoughts?

    I added these three items to the pq file:

    1. Register into the tables list/folders: {"Name Format Summary", ConstituentListType, urlConstitList & "?include_inactive=true&include_deceased=true", branchConstituent, NameFormatLayout, DefaultRecLimit, true},
    2. Table Layout for API Schema:

    NameFormatType = type table [

    id = nullable text,

    configuration_id = nullable text,

    constituent_id = nullable text,

    custom_format = nullable logical,

    formatted_name = nullable text,

    #"type" = nullable text ];

    • Layout / Power Query Load Script:

    NameFormatLayout = (sourceTable as table) as table =>

    let

    removeCols = Table.RemoveColumns(sourceTable, List.RemoveItems(Table.ColumnNames(sourceTable), {"id"})),

    addNameFormatCol = Table.AddColumn(removeCols, "NameFmt", each LoadTableForSingleRec([id], "constituent/v1/constituents/#{0}/nameformats/summary", NameFormatType), NameFormatType),

    result = Table.ExpandRecordColumn(addNameFormatCol, "NameFmt",

    { "configuration_id", "constituent_id", "custom_format", "formatted_name", "type" },

    {"configuration_id", "constituent_id", "custom_format", "formatted_name", "Format_type"})

    in

    result;

Categories