

Jeremy
MemberForum Replies Created
Bonjour Laurent,
J’espère qu’il n’est pas trop tard pour répondre. Il doit sans doute y avoir un problème au niveau des accès mais difficile de dire. En revanche, je vois que le fichier Excel est dans un OneDrive. Pourquoi ne pas directement utiliser une source de type Internet ou mieux encore dossier SharePoint (https://<SITE>-my.sharepoint.com/personal/<Nom>) qui correspond à l’adresse du OneDrive ?
Cela permettrait une actualisation sans aucun problème.
CommentID=iTVaEh2j01oMyDw, PostID=mPhvAADYN6OnQBi
Bonjour Xavier,
J’ai déjà eu cela avec des limitation à 500 enr par appel. J’ai dû créer des fonctions en M pour gérer cela.
Voici mes fonctions :
importTablenletn Source = (tableImport) =>n letn firstPageUrl = "https://<NomDuSite>/api/" & tableImport,nn output = @GenerateByPage(n (lastPage) =>n letn next = if lastPage <> null then Value.Metadata(lastPage)[Next] else null,n urlToUse = if (next <> null) then next else firstPageUrl,n current = if (lastPage <> null and next = null) then null else getJson(urlToUse),n dataset = if (current <> null) then getDataset(current) else null,n link = if (current <> null) then current[next_page_url] else nulln inn dataset meta [Next=link]n ),nn getDataset = (json) =>n letn ConvertirEnTable = Table.FromRecords({json}),n Developper = Table.ExpandListColumn(ConvertirEnTable, "data"),n GarderData = Table.SelectColumns(Developper,{"data"})n in GarderData,n n getJson = (url) =>n letn waitForResult = WaitFor(n (iteration) =>n letn Source = Web.Contents(url, [Headers=[Authorization="Bearer " & ApiToken], ManualStatusHandling = {500}, IsRetry = iteration > 0]),n contentType = Value.Metadata(Source)[Content.Type],n actualResult = if contentType = "application/json" then Json.Document(Source) else nulln in actualResult,n (iteration)=> #duration(0, 0, 0, Number.Power(2, iteration)),n 5n )n inn if waitForResult = nulln then error "Wait for gave up after too many retry"n else waitForResultn inn outputninn Source
A noter que le Token est dans un paramètre que j’ai appelé “ApiToken”.
Ensuite, j’ai une fonction qui permet de générer par page :
GenerateByPagenletn Source = (getNextPage as function) as table =>n letn listOfPages = List.Generate(n () => getNextPage(null), // get the first page of datan (lastPage) => lastPage <> null, // stop when the function returns nulln (lastPage) => getNextPage(lastPage) // pass the previous page to the next function calln ),n // concatenate the pages togethern tableOfPages = Table.FromList(listOfPages, Splitter.SplitByNothing(), {"Column1"}),n firstRow = tableOfPages{0}?n inn // if we didn't get back any pages of data, return an empty tablen // otherwise set the table type based on the columns of the first pagen if (firstRow = null) thenn Table.FromRows({})nt // check for empty first tablen else if (Table.IsEmpty(firstRow[Column1])) thenn firstRow[Column1]n elsen Value.ReplaceType(n Table.ExpandTableColumn(tableOfPages, "Column1", Table.ColumnNames(firstRow[Column1])),n Value.Type(firstRow[Column1])n )ninn Source
Enfin, parce qu’il y a une limite de nombre de transactions par minute, j’avais dû créer une fonction d’attente :
WaitFornletn Source = (producer as function, interval as function, optional count as number) as any =>n letn list = List.Generate(n () => {0, null},n (state) => state{0} <> null and (count = null or state{0} < count),n (state) => if state{1} <> null then {null, state{1}} else {1 + state{0}, Function.InvokeAfter(() => producer(state{0}), interval(state{0}))},n (state) => state{1})n inn List.Last(list)ninn Source
J’espère que cela pourra t’aider. Peut-être une idée d’article à faire dès que je pourrais car c’est une vraie problématique.
ATTENTION : j’ai eu des problèmes avec ce genre de code car la source devient dynamique et elle ne peut pas être utilisée dans Power BI Services. En effet l’actualisation automatique des sources dynamiques ne fonctionne pas.
CommentID=rPOfMdeNFioAZOK, PostID=IT9iFywp9PBDbYs
Bonjour Alexandre,
En général, le message arrive lorsqu’on perd le Query Folding, lorsqu’une action ne peut pas être interprétée dans la requête SQL correspondante.
Dans le cas que je vois, il faut récupérer le numéro de mois sur deux caractère sur une colonne de type DateTime. La solution est d’ajouter une colonne avec la fonction Date.Month. (ou aller dans : Ajouter une colonne > Date > Mois > Mois).
En faisant un clic droit sur l’étape puis en cliquant sur “Afficher la requête native”, tu peux voir la requête SQL qui correspond.
Ce qui donne : datepart(“m”, [_].[neo_date]) as [Mois]
Dans ton cas, l’option “Requête native” était grisée, ce qui signifie que tu avais perdu le “Query Folding” (correspondance automatique avec le langage SQL).
Enfin, si tu veux garder les 2 caractères du mois, une autre solution pourrait être (liste d’étapes) :
Modifier le type en Date
Modifier le type en Texte (en ajoutant une étape)
Extraire la plage de texte (index de départ : 5, nb caractères : 2)
Voici le code (avec mes données) :
// Extraire les deux caractères du mois d'une colonne date
#"Mettre au format date" = Table.TransformColumnTypes(#"Mois inséré",{{"neo_date", type date}}),
#"Mettre au format texte" = Table.TransformColumnTypes(#"Mettre au format date",{{"neo_date", type text}}),
#"Extraire les 2 caract." = Table.TransformColumns(#"Mettre au format texte1", {{"neo_date", each Text.Middle(_, 5, 2), type text}})
Le tout est de toujours trouver le moyen de contourner quand cela est possible.
CommentID=vCmanl2Wk0tzmgP, PostID=UlP9q03yqXjmsbh
Bonjour Fred,
Malheureusement il n’y a de possibilité de gérer ces autorisations au niveau d’un rapport. Toutefois, il est possible de le faire au niveau du tenant si cela peut aider. Dans le centre d’administration (Paramètres du client > Paramètres d’exportation et de partage > Exporter vers Excel), tu peux gérer ces autorisations par groupes de sécurité ou par personnes (en ajout ou par exception).
A défaut, il est également de gérer le niveau d’information de l’export grâce au RLS (Row Level Security) ou aux étiquettes de sensibilité avec Purview.
Pour les rôles au niveau de l’espace de travail, voici un lien qui explique l’ensemble des droits en fonction des rôles.
Même si la réponse ne répond pas à ton besoin, j’espère que cela aura au moins éclairé.
CommentID=5XoKFJiApyHzdjC, PostID=19JfvtMcbTH0TZH
En fait, je n’ai jamais testé de filtrer avec Power Automate intégré dans un Power BI. Je ne pourrais donc pas en dire plus à ce sujet.
En revanche une autre méthode consisterait à utiliser la toute dernière nouveauté (annoncée durant Microsoft Build) : Power BI intégré dans Power Point. et ensuite, il peut être enregistré en PDF sans problème après avoir appliqué les filtres. Je viens de tester et cela fonctionne parfaitement.
CommentID=750TY70qBQKY4rc, PostID=msgocCatfMGFIAn
Bonjour @Kevin P ,
Normalement, le format va se mettre à jour en fonction des paramètres de ton PC si tu utilises bien la hiérarchie date classique. Si tu utilises une table date, tu peux prévoir la traduction dans cette table.
Il existe aussi une fonction DAX :
= FORMAT( Table[Date], “mm/dd/yyyy”, “fr-FR” )
Afin de répondre au mieux, peux-tu envoyer un exemple de ta hiérarchie via un fichier PBIX ?
CommentID=PVu3B9ynqbNokdE, PostID=53qLgZS6Ki2LOux
Bonjour @Romain,
As-tu la possibilité de me partager le code M de la connexion à ta liste ou ton fichier SharePoint ? Et peux-tu pme communiquer le message d’erreur que tu as lorsque tu actualises ?
CommentID=3AOTO8PvXFf7s1f, PostID=Olexgm4VWRdlwVe
Où sont stockées tes données ?
CommentID=HPDx5vc3Kskgu3Z, PostID=Olexgm4VWRdlwVe
Bonjour @Romain,
Je vois que l’actualisation doit être fait qu’une seule fois par jour. Ensuite, il s’agit d’un espace de travail personnel. Mais as-tu une licence Power BI Pro pour lancer l’actualisation ? En effet, cela est indispensable. Il est possible de prendre une licence d’essai pour 60 jours pour tester.
Il faut savoir qu’avec une licence Power BI Pro, tu seras limité à 8 actualisations par jour mais cela ne posera pas de problème car le flux est lancé une fois par jour.
Enfin, l’actualisation ne fonctionnera que sur un espace de travail et non sur Power BI Desktop qui est en local sur ton PC. L’actualisation mettra à jour les données. Aussi, as-tu essayé d’actualiser manuellement depuis Power BI Service pour vérifier que les credentials ont bien été saisis et que l’actualisation fonctionne déjà bien manuellement ?
CommentID=MTVN0Bi8rGOfYyd, PostID=Olexgm4VWRdlwVe
Hello @Romain
Voici un article que j’ai ecrit en 2016 qui explique les fusions pas à pas.
Si tu as des questions, n’hésite pas
CommentID=1SWMbYehogYrYFN, PostID=NmOd5tXoleV4zs5
Bonjour @Iheb
L’architecture me semble intéressante. Je me pose tout de même la question de l’actualisation du Dataset qui va lire toutes ces données. Va t-il être actualisé toutes les heures (en décalage de 30 min avec le Dataflow >= -7j) ?
Pour les dimensions, je suis en accord avec vous.
Pour les autres Dataflows, est-ce qu’une actualisation hebdomadaire suffirait pour les dates < -7j du fait que nous parlions de 7 jours ?
Et pour le dernier, si c’est la version Pro, ils vont être limités à 8 actualisations par jour du coup.
Les solutions vont également dépendre du volume de données, de la durée des actualisations et des besoins métier. Et bien sûr comment vont ensuite être utilisés les dataflows ?
CommentID=hyMN2VuqDUcKbs0, PostID=gufJx6VanZquIwx
Bonjour @Iheb
Lorsque l’actualisation doit démarrer, la demande est faite mais elle ne commence par forcément de suite. L’actualisation est mise dans une queue et se lancera dès que ce sera possible. Pour les demandes, comme ce n’est pas à une heure précise (au niveau des minutes, nous ne sommes ni à 00 ou à 30 comme pour les planifications), il est plus rare d’avoir des actualisations en parallèle.
Après cela est encore plus accentué si vous utilisez une capacité premium car la capacité est limitée. Par exemple, pour la P1, il n’est pas possible d’avoir plus de 6 actualisations en simultanée. Du coup, les actualisations se déclenchent dès que la place est disponible.
Sinon, je ne vois pas d’autre raison particulière.
Bonne journée.
CommentID=96bSdTFE8nAsAWT, PostID=hENVVx6KePpERuI
@Romain, tu peux actualiser manuellement dans ton espace de travail sans avoir besoin de licence. En revanche, il faut que tu ailles dans la partie paramètres de ton jeu de données pour mettre à jour les éléments de connexion.
Lorsque tu actualises, quelle erreur as-tu ? Et peux-tu me montrer ton code Power Query ? (dans Power Query, depuis Power BI Desktop, cliquer sur Accueil puis Editeur avancé après avoir sélectionner la requête qui se connecte à tes données SharePoint).
SubCommentID=aCoZ4XBiFHIoUVQ, CommentID=WlZJBclqUQKMMN4, PostID=Olexgm4VWRdlwVe
En les fractionnant, cela fonctionne ?
SubCommentID=9QDKz0G9FalJZCO, CommentID=kevH2RDTqpEzBle, PostID=Olexgm4VWRdlwVe
Pour la licence, elle n’est pas obligatoire en utilisant l’espace de travail perso.
En revanche, si l’actualisation manuelle ne fonctionne pas, il est impossible de le faire avec Power Automate.
SubCommentID=3XvEH6iMrVOtg3d, CommentID=kevH2RDTqpEzBle, PostID=Olexgm4VWRdlwVe