Direct Query / Mode importer

Étiquetté : , ,

  • Direct Query / Mode importer

    Posté par Monsacré sur 20 février 2023 à 9h21

    Bonjour,

    Je me permets d’écrire sur ce forum, car j’ai un blocage que je n’ai jamais connu précédemment.

    Je travaille avec PBI DESKTOP sur des tables de mon ERP Sage X3 (BDD SQL), en lecture seule.

    L’idée n’étant pas d’importer les données, je les prépare (ETL) en mode direct Query.

    Pourtant, dès lors que je procède à certains manipulations “basiques” sous Power Query, il m’est demandé de passer en mode Importer (cf PJ PDF screen du pas à pas : tentative d’ajout d’une colonne par extraction entre délimiteurs).

    Quelle solution existe t il pour contourner/annuler ce blocage ?

    Je précise avoir déjà procédé à la désinstallation et ré-installation de PBI_DESKTOP.

    J’ai aussi fait tester mon DSI sur des manipulations identiques, il n’a pas ce problème / Message là.

    Merci d’avance pour votre aide.

    Alexandre

    PostID=UlP9q03yqXjmsbh

    Jeremy a répondu Il y a 9 mois, 1 semaine 1 Membre · 3 Réponses
  • 3 Réponses
  • Jeremy

    Membre
    27 février 2023 à 8h06

    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

  • Monsacré

    Membre
    27 février 2023 à 8h46

    Bonjour Benjamin,

    Pour ce qui est du contournement, j avais procédé différemment, mais merci de la proposition 👍👍

    Mon problème ne résidait pas dans l’extraction du mois (qui était ici un exemple) mais dans l’apparition de ce message bloquant sur certaines manipulations.

    Je me permets de re-poser le problème de fond : qu’est ce qui pourrait générer ce blocage qui parait m’être propre (comme indiqué précédemment, mon DSI, sur des manipulations basiques et similaires ne les rencontre pas).

    Problème de PC ? Connexion ?

    Toute aide me sera utile. Aujourd’hui, je procède par contournement pour arriver à mes fins, mais se priver de manipulations basiques offertes par l’éditeur Powerquery reste regrettables.

    Merci

    Alexandre

    CommentID=G9VtwR4dnkb4SoU, PostID=UlP9q03yqXjmsbh

  • Jeremy

    Membre
    28 février 2023 à 6h34

    Bonjour Alexandre,

    Pour ton DSI, est ce que ce sont exactement les mêmes étapes ou juste similaires ? Est il possible de tester exactement les mêmes car il n’y a aucune raison que cela soit différent, à première vue bien sûr. En tous, cela ne vient pas de Power BI Desktop.

    CommentID=S9lAtQY7ijMIm4E, PostID=UlP9q03yqXjmsbh

Connectez-vous pour répondre.