Ajout d'une colonne multilingue dans un jeu de données

Apprenez à ajouter une colonne prenant en charge les données multilingues

Ce guide vous montre comment ajouter une colonne multilingue à un jeu de données, en utilisant Power BI pour récupérer des traductions spécifiques en fonction de la langue.

Par défaut, le code récupère la version anglaise ou, si elle n'est pas disponible, la première langue trouvée dans la liste.

Voici le script Power BI complet, avec un tri optionnel pour conserver uniquement le dernier état de chaque entité.

let
    // Remplacez ces variables avec vos propres informations
    dataset_name = "FormTemplates",
    api_key = "your_api_key",
    organization_id = "your_organization_id",
    
    RetryRequest = (retries as number) =>
    let
        apiResponse = try Json.Document(Web.Contents("https://developer.finalcad.cloud/api/organizations/" & organization_id & "/data/config/dataseturl?name=" & dataset_name, 
            [Headers=[#"X-API-Key"= api_key, Authorization="token " & api_key]])),
        Source = if apiResponse[HasError] and retries > 0 then
            Function.InvokeAfter(() => @RetryRequest(retries - 1), #duration(0, 0, 0, 2))
        else Parquet.Document(Binary.Buffer(Web.Contents(apiResponse[Value][url])))
    in
        Source,

    Source = RetryRequest(3),

    // Tri optionnel pour conserver uniquement le dernier état de chaque entité
    SortedRows = Table.Buffer(Table.Sort(Source, {{"updated_at", Order.Descending}})),
    DistinctRows = Table.Distinct(SortedRows, {"id"}),

    // Ajout d'une colonne prenant en charge les données multilingues
    AddNameColumn = Table.AddColumn(DistinctRows, "name", each 
        let
            template = [template],
            namesList = try template[names] otherwise null,
            enRecord = if namesList <> null then List.First(List.Select(namesList, each _[localization] = "en")) else null,
            translationEn = if enRecord <> null then enRecord[translation] 
                            else if namesList <> null and List.Count(namesList) > 0 then namesList{0}[translation]
                            else null
        in
            translationEn
    )
in
    AddNameColumn

Explication du code multilingue

  • Étape de tri optionnel : Les étapes SortedRows et DistinctRows sont optionnelles et ne sont nécessaires que si vous souhaitez conserver le dernier état de chaque entité.

  • Logique de la colonne multilingue : Le code ajoute une colonne name au jeu de données. Il essaie d’abord de sélectionner la traduction en anglais (en) si elle est disponible. Si aucune traduction en anglais n'est trouvée, il utilise la première langue trouvée dans la liste des traductions.

Cette configuration permet aux utilisateurs d’adapter le code pour récupérer d’autres langues ou ajuster la logique de secours selon leurs besoins.

Cette réponse vous a-t-elle aidé ?
😞
😐
😁