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
etDistinctRows
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.