trivento / ctgb-mst-public-api

1 stars 1 forks source link

problem extracting all data #6

Open appel-ei opened 5 months ago

appel-ei commented 5 months ago

Beste,

Momenteel ben ik een API aan het inrichten voor een Power BI rapportage met daarin alle informatie.

Nu blijkt het alleen erg lastig te zijn om alle data te ontrekken. In de bijlage heb ik een tabel gevoegd die goed te ontrekken is, nu heb ik helaas meer informatie nodig om ons NL team van voldoende informatie te kunnen voorzien. Het gaat hierbij bijvoorbeeld om:

Zouden jullie ons hierbij kunnen helpen om de API op een correcte manier in te richten? Helaas is de documentatie die nu beschikbaar is niet diepgaand genoeg om dit zelf te doen.

Huidige code voor het extracten van de data: let // Define a function to get data from a specific page GetPage = (offset as number) as table => let url = "https://public.mst.ctgb.nl/public-api/1.0/authorisations?page[offset]=" & Text.From(offset) & "&page[limit]=50", Source = Json.Document(Web.Contents(url)), Data = Source[data], DataTable = Table.FromRecords(Data) in DataTable,

// Function to get detailed information for a single product
GetProductDetails = (productId as text) as record =>
    let
        url = "https://public.mst.ctgb.nl/public-api/1.0/authorisations/" & productId & "?filter[locale]=nl",
        Source = Json.Document(Web.Contents(url)),
        Data = Source[data]
    in
        Data,

// Custom Function to Unpack mixed data type
UnpackMixedType = (value as any) as table =>
    if Type.Is(Value.Type(value), List.Type) then
        Table.FromList(value, Splitter.SplitByNothing())
    else
        Table.FromRecords({value}),

// Create a list of offsets for pagination (0, 50, 100, ..., up to 1250 for 26 pages)
offsets = List.Numbers(0, 1250),

// Get data from each page and combine into a single table
GetAllData = List.Transform(offsets, each GetPage(_ * 50)),
CombinedData = Table.Combine(GetAllData),
#"Expanded categoryType" = Table.ExpandRecordColumn(CombinedData, "categoryType", {"descriptionEN", "descriptionNL", "type"}, {"categoryType.descriptionEN", "categoryType.descriptionNL", "categoryType.type"}),

// Add a custom column to hold the detailed information
#"Added Custom" = Table.AddColumn(#"Expanded categoryType", "Details", each GetProductDetails([id])),
#"Expanded Details" = Table.ExpandRecordColumn(#"Added Custom", "Details", {"name", "compositions", "uses"}, {"Details.name", "Details.compositions", "Details.uses"}),

Bij voorbaat dank,

Met vriendelijke groet, Reinout Hofman

jeroom commented 5 months ago

Hoi,

Voor vragen / feature requests graag direct contact opnemen met het CTGB service desk (zie ctgb.nl).

Wij bieden op deze plek eigenlijk verder geen support bij het bouwen van aanroepende applicaties, zoals ook aangegeven in de introductie van de api docs.

appel-ei commented 5 months ago

Hoi Jeroom,

Thanks voor je snelle reactie, wij zijn vanuit de CTGB service desk naar hier doorverwezen.

Groetjes,

Reinout

jeroom commented 5 months ago

Hallo Reinout,

Op dit moment is de API eigenlijk niet geschikt om geagregeerde en bulk data te verzamelen. Hier wordt door Ctgb ook geen uitgebreide ondersteuning op geboden. Onder andere vanwege eerdere niet-geslaagde pogingen om de JSON in PowerBI te gebruiken. Wat is het concrete probleem met de DTG groep en de dosering? Mogelijk dat we je toch wat op weg kunnen helpen. Misschien dat een download vanuit de toelatingen site meer basis biedt voor jullie wens.

Groeten, Jeroom