company logo

Centre d'aide

Aller sur Finalcad One
Toutes les collectionsTableaux de bordTableaux de bord personnalisésExemples d'usage dans Microsoft Power BIConfigurer l'actualisation automatique dans le cloud

Configurer l'actualisation automatique dans le cloud

Apprenez à configurer l’actualisation automatique d’un dashboard Power BI dans le cloud

Configurer l'actualisation automatique d'un dashboard Power BI Online implique certaines contraintes techniques. Cela nécessite notamment un code adapté pour récupérer les données depuis Finalcad One.

Voici comment procéder, étape par étape.

Sur Power BI Desktop

Pour rafraîchir automatiquement les données d’un dashboard dans Power BI Online, vous devez configurer des requêtes spécifiques dans Power BI Desktop. Certaines de ces requêtes pourront être réutilisées directement dans vos datasets, tandis que d'autres serviront de paramètres fixes dans le code.

Paramètres

Créez les quatre paramètres suivants dans Power BI Desktop, nécessaires à la configuration des requêtes :

  • ApiUrl = https://developer.finalcad.cloud/

  • MediaApiUrl = https://medias.eu.finalcad.cloud

  • OrganizationId = l’identifiant de votre organization

  • ApiKey = Votre clé d’API

Requêtes

Ces requêtes sont nécessaires pour l’actualisation automatique de chaque dataset. Pour éviter la duplication du code, vous pouvez les isoler dans des requêtes distinctes réutilisables par l'ensemble de vos datasets.

GetDatasetUrl

(datasetName) =>
    let
        RawData = Web.Contents(ApiUrl, [
            RelativePath = "api/organizations/" & OrganizationId & "/data/config/dataseturl",
            Query = [
                name = datasetName
            ],
            Headers=[#"X-API-Key"= ApiKey, Authorization="token " & ApiKey]
        ]),
        Url = Json.Document(RawData)[url]
    in
        Url

GetAuthenticationParameters

(datasetName) => 
    let
        GetAuthenticationParameterValue = (token) =>
        let
            split = Text.Split(token, "="),
            Value = split{1}
        in
            Value,

        datasetUrl = GetDatasetUrl(datasetName),
        queryParamPos = Text.PositionOf(datasetUrl, "?"),
        queryParams = Text.RemoveRange(datasetUrl, 0, queryParamPos + 1),
        splitParameters = Text.Split(queryParams, "&"),

        expires = GetAuthenticationParameterValue(splitParameters{0}),
        signature = GetAuthenticationParameterValue(splitParameters{1}),
        keyPairId = GetAuthenticationParameterValue(splitParameters{2}),

        AuthenticationParameters = [Expires = expires, Signature = signature, KeyPairId = keyPairId]
    in
        AuthenticationParameters

GetDataset

(relativePath, query) => 
    let
        RawData = Web.Contents(MediaApiUrl, [
            RelativePath = relativePath,
            Query = query
        ])
    in
        RawData

Datasets

Une fois les paramètres et requêtes en place, le code de récupération d’un dataset devient plus simple et modulaire.

La seule variable à modifier pour chaque nouveau dataset est “dataset_name “, défini dans les premières lignes du script, pour choisir le dataset voulu.

let
    dataset_name = "Modules",

    // Étape 1: Récupérer les paramètres d'url présignée
    authenticationParameters = GetAuthenticationParameters(dataset_name),
    
    // Étape 2: Récupérer le fichier de dataset
    dataset = GetDataset("data/datasets/" & OrganizationId & "/" & dataset_name & "/" & dataset_name & ".parquet", [
        Expires = authenticationParameters[Expires],
        Signature = authenticationParameters[Signature],
        #"Key-Pair-Id" = authenticationParameters[KeyPairId]
    ]),
    datasetContent = Parquet.Document(Binary.Buffer(dataset)),
    
    // Étape 3 : Trier les lignes par la colonne "updated_at"
    SortedRows = Table.Sort(datasetContent, {{"updated_at", Order.Descending}}),
    
    // Étape 4 : Supprimer les doublons basés sur la colonne "module_id"
    DistinctRows = Table.Distinct(SortedRows, {"module_id"}),

    // Étape 5 : Ajouter une colonne "name" selon la logique de valeur préférée
    AddNameColumn = Table.AddColumn(DistinctRows, "name", each 
        let
            valuesList = [names], // Assuming "names" is the column holding the list of records
            preferredValue = 
                if valuesList = null or List.IsEmpty(valuesList) then null
                else
                    let
                        frRecord = List.Select(valuesList, each [Locale] = "fr" and [Value] <> null),
                        enRecord = if List.IsEmpty(frRecord) then List.Select(valuesList, each [Locale] = "en" and [Value] <> null) else {},
                        anyRecord = if List.IsEmpty(frRecord) and List.IsEmpty(enRecord) then List.Select(valuesList, each [Value] <> null) else {},
                        finalValue = 
                            if not List.IsEmpty(frRecord) then frRecord{0}[Value]
                            else if not List.IsEmpty(enRecord) then enRecord{0}[Value]
                            else if not List.IsEmpty(anyRecord) then anyRecord{0}[Value]
                            else null
                    in
                        finalValue
        in
            preferredValue
    )
in
    AddNameColumn

Sur Power BI Online

Une fois votre dashboard publié sur Power BI Online, quelques étapes supplémentaires sont nécessaires pour finaliser la configuration.

Le code mis en place permet de contourner l’utilisation des passerelles de données. Celles-ci doivent toutefois être configurées en mode anonyme. Un avertissement restera affiché, mais l’authentification auprès de l’API Finalcad One sera assurée directement par le code et votre clé d’API.

Une fois les passerelles configurées, vous pouvez activer le rafraîchissement automatique du dashboard sans difficulté.

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