Transformer un CSV complexe

  • Transformer un CSV complexe

    Posté par GREGOIRE sur 11 août 2024 à 20h24

    Bonjour à tous,

    je suis en train de travailler sur un flux qui récupère automatiquement depuis SharePoint un fichier CSV chargé depuis un programme SAP 1* fois par jour, le transforme afin de pouvoir patch les données vers une liste sharepoint.

    J’ai réussi à transformer en partie mon CSV grâce à la vidéo de Raza csv data to sharepoint list with power automate – YouTube, mais dans l’état actuel, mon array n’est pas encore assez propre, un échantillon ci-dessous :

    <pre class=”language-javascript”>[
    ", 1,MATERIAL,1010007,GRUN,FR , ,MM02SAPMMG01, , ,SYSTEM,* , 1,CHAINETTE EN CORDON ,\r",
    ", 1,MATERIAL,1010007,GRUN,FR , ,MM02SAPMMG01, , ,SYSTEM,/ , 2,PERMETTANT LE PORT DE LUNETTES AUTOUR DU COU. ,\r",
    ", 1,MATERIAL,1010007,GRUN,FR , ,MM02SAPMMG01, , ,SYSTEM,/ , 3,CONVIENT A TOUT TYPES DE LUNETTES ,\r",
    ", 1,MATERIAL,1010007,GRUN,FR , ,MM02SAPMMG01, , ,SYSTEM,/ , 4, ,\r",
    ", 1,MATERIAL,1010007,GRUN,FR , ,MM02SAPMMG01, , ,SYSTEM,/ , 5,REF 3386082 ,\r",
    ", 1,MATERIAL,1010007,GRUN,FR , ,MM02SAPMMG01, , ,SYSTEM,/ , 6, ,\r",
    ", 2,MATERIAL,1010100,GRUN,FR , ,MM02SAPMMG01, , ,SYSTEM,* , 1,BOTTE DUNLOP PROTOMASTOR FULL SAFETY 142PP ,\r",
    ", 2,MATERIAL,1010100,GRUN,FR , ,MM02SAPMMG01, , ,SYSTEM,* , 2,MATIERE : PVC / NITRILE DE CAOUTCHOUC ,\r",
    ", 2,MATERIAL,1010100,GRUN,FR , ,MM02SAPMMG01, , ,SYSTEM,* , 3,POINTURES : 40 ,\r"
    ]

    j’ai besoin dans un premier temps d’isoler les index [3] & [13] sous le même format précédent :

    <pre class=”language-javascript”>[
    "1010007", "CHAINETTE EN CORDON\r",
    "1010007", "PERMETTANT LE PORT DE LUNETTES AUTOUR DU COU.\r",
    "1010007", "CONVIENT A TOUT TYPES DE LUNETTES\r",
    "1010007", "\r",
    "1010007", "REF 3386082\r",
    "1010007", "\r",
    "1010100", "BOTTE DUNLOP PROTOMASTOR FULL SAFETY 142PP\r",
    "1010100", "MATIERE : PVC / NITRILE DE CAOUTCHOUC\r",
    "1010100", "POINTURES : 40\r"
    ]

    Mais dans l’état actuel, je n’y arrive pas, j’ai tenté un select, mais impossible de garder le même format, la même syntaxe

    Puis, de Join (?) l’index cette fois ci [2] suivant le code article qu’il y a en [1] :

    <pre class=”language-javascript”>[
    "1010007", "CHAINETTE EN CORDON PERMETTANT LE PORT DE LUNETTES AUTOUR DU COU. CONVIENT A TOUT TYPES DE LUNETTES REF 3386082\r",
    "1010100", "BOTTE DUNLOP PROTOMASTOR FULL SAFETY 142PP MATIERE : PVC / NITRILE DE CAOUTCHOUC POINTURES : 40\r"
    ]

    j’ai réussi un certain nombre de transformations, mais sans jamais retrouver le format Array JSON qui m’intéresse beaucoup pour le patch vers SharePoint qui n’est pas très rapide mais fiable et simple à mettre en place.

    Je vous remercie pour votre aide

    greg

    • Cette discussion a été modifiée Il y a 3 mois, 2 semaines par  GREGOIRE.
    • Cette discussion a été modifiée Il y a 3 mois, 2 semaines par  GREGOIRE.
    • Cette discussion a été modifiée Il y a 3 mois, 2 semaines par  GREGOIRE.
    R3dKap a répondu Il y a 2 mois, 4 semaines 2 Membres · 3 Réponses
  • 3 Réponses
  • R3dKap

    Membre
    18 août 2024 à 12h52

    Salut @GREGOIRE,

    J’ai récupéré tes données et appliqué la même technique que Reza jusqu’à l’étape de la boucle. Ensuite, voici comment j’ai fait :

    • avant la boucle j’initialise une variable strJoin de type String
    • dans la boucle j’ajoute une action Ajouter à la variable de chaîne, je choisi la variable strJoin et en valeur je mets la fonction split(item(),';')[12] (moi c’est 12 passke j’ai pas pris la première colonne vide de ton CSV)
    • après la boucle j’initialise une variable strResult de type String et j’y récupère la valeur de strJoin

    Par exemple, voici le résultat pour les 6 premières lignes de ton CSV :

  • GREGOIRE

    Membre
    26 août 2024 à 8h29

    Bonjour redkap,

    je rentre juste de congés, je vais pouvoir tester ton approche, je te remercie pour le temps pris !

    en parallèle j’ai exploré une autre approche, où je transforme mon csv dans un Dataflow Power Apps :

    une fois transformé et rafraichi, j’ai un power automate qui récupère les données de la requête dataverse pour les patch dans sharepoint.

    pour le coup ça marche nickel, la puissance de power query est inimitable. J’ai un doute sur la pérennité de l’action List Rows qui était anciennement Premium, qui ne l’est plus, c’est rare que microsoft fasse des cadeaux, je me demande si l’action ne sera pas prochainement obsolète …

    Quoi qu’il en soit, L’action “list rows” fournit une option “count rows”, qui est définie sur 5 000 par défaut, mais ma table de dataflow est d’environ 4 500 lignes, donc Power Automate essaie de répertorier les lignes jusqu’à 5 000 lignes. À la fin, cela fonctionne, tout est patch dans ma liste SP, mais l’état des exécutions est en échec.

    Comment compter dynamiquement les lignes d’un dataflow ?

    Merci 🙂

  • R3dKap

    Membre
    26 août 2024 à 9h50

    @GREGOIRE,

    Le connecteur Dataverse est bien premium. Donc, si tu utilises l’action List rows tu vas devoir avoir une licence premium pour l’utiliser :

    Pour ce qui est de compter les lignes du dataflow, là je sais pas…

Connectez-vous pour répondre.