Problème avec les sources de données dynamiques : rendre compatible une fonction

  • Problème avec les sources de données dynamiques : rendre compatible une fonction

    Posté par Macktireh sur 21 janvier 2025 à 22h25

    <pre class=”language-markup”>Bonjour à tous,

    Je rencontre un problème lié aux sources de données dynamiques dans Power BI Service, et j'aimerais bénéficier de vos conseils pour trouver une solution.
    Dans mon projet, j'ai créé une fonction en Power Query (langage M) qui permet de basculer entre deux sources de données :

    1. **Environnement local** : un fichier CSV hébergé sur un serveur web, utilisé pour les tests et le développement.
    2. **Environnement de production** : une base de données MySQL, utilisée lors de la publication du rapport.

    Voici ma fonction actuelle :

    
    let
    GetData = (UrlCsvFile as text, NumberColumnsCSV, MySQLHostName as text, DatabaseName as text, SQLQuery as text) =>
    let
    // Définir les sources de données
    CsvSource = Csv.Document(Web.Contents(UrlCsvFile), [Delimiter=";", Columns=NumberColumnsCSV, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    CsvPromotedHeaders = Table.PromoteHeaders(CsvSource, [PromoteAllScalars=true]),
    
    SourceMySQL = MySQL.Database(MySQLHostName, DatabaseName, [ReturnSingleDatabase=true, Query=SQLQuery, CreateNavigationProperties=false]),
    
    // Condition pour choisir la source de données
    Result = if IS_PRODUCTION then SourceMySQL else CsvPromotedHeaders
    in
    Result
    in
    GetData
    

    <pre class=”language-markup”>

    Et un exemple d'utilisation une requête :

    
    let
    Source = GetData(URL_CSV_FILE, 12, MySQL_HOSTNAME, MySQL_DATABASE_NAME, MySQL_QUERY),
    AddedColumn = Table.AddColumn(Source, "NewCol", each Text.BeforeDelimiter([ma_col], " - "), type text)
    in
    AddedColumn
    

    <pre class=”language-markup”>

    ### Problème :
    Lors de la publication du rapport dans Power BI Service, j'obtiens l'erreur suivante :
    > "This dataset includes a dynamic data source. Since dynamic data sources aren't refreshed in the Power BI service, this dataset won't be refreshed."

    IS_PRODUCTION, URL_CSV_FILE, MySQL_HOSTNAME, MySQL_DATABASE_NAME, MySQL_QUERY, ... sont des paramètres power query.

    ### Ce que je cherche :
    1. **Comment structurer ma fonction pour qu'elle soit compatible avec Power BI Service ?**
    - En production, je veux me connecter directement à MySQL.
    - En local, je veux utiliser les fichiers CSV pour le développement.

    2. **Comment contourner l'utilisation de sources dynamiques comme Web.Contents ou rendre cela acceptable pour Power BI Service ?**

    Merci d'avance pour vos conseils et suggestions !

    ### Informations complémentaires :
    - Mon fichier CSV est hébergé sur une URL publique statique.
    - Je souhaite que le rafraîchissement automatique fonctionne uniquement pour la base de données MySQL en production.

    Toute aide ou exemple pratique sera grandement apprécié !

    • Cette discussion a été modifiée Il y a 2 semaines par  Macktireh.
    • Cette discussion a été modifiée Il y a 2 semaines par  Macktireh.
    • Cette discussion a été modifiée Il y a 2 semaines par  Macktireh.
    Sophie a répondu Il y a 2 semaines 2 Membres · 1 Réponse
  • 1 Réponse
  • Sophie

    Membre
    22 janvier 2025 à 7h30

    Bonjour,

    Personnellement je gère le changement de source avec un paramètre.

    Cependant j’avoue… qu’il s’agit souvent simplement d’un changement de dossier sur un site sharepoint, n’ayant jusque là pas encore eu l’occasion de taper directement dans les bases de données en SQL. (mais àa va changer).

    Je ne sais pas si cela peut être une piste dans ce cas là aussi:

    https://youtu.be/d6WN1T7h6DY?si=f91fE-0cNt7hgtgQ

Connectez-vous pour répondre.