Developper une table en gardant une etiquette p query
Bonjour,
Avec power query j'ai réussi à récupérer des PDF a partir d'un chemin ensuite je développe mes PDF mais je n'arrive pas a garder les noms des PDF quand j'ai développer en dessous je met les images et le code que j'ai pour l'instant.
Ce que je souhaite en fait c'est au moment de développer c'est de garder la colonne "Name" qui est 10.pdf, 20.pdf, 30.pdf donc récupérer cette colonne et qui soit dans l'image 3 si c'est possible sachant que dans le développement image 2 un nom Name est déjà existant.
Voici le code
let
fnTransform=let
S = (Paramètre1 as binary) => let
in
Pdf.Tables(Paramètre1, [Implementation="1.3"])
in S,
Source = Folder.Files(Excel.CurrentWorkbook(){[Name="DossierPDF"]}[Content]{0}[Column1]),
FiltrePDF = Table.SelectRows(Source, each [Extension] = ".pdf"),
FiltreFichiers = Table.SelectRows(FiltrePDF, each [Attributes]?[Hidden]? <> true),
AppelFn = Table.AddColumn(FiltreFichiers, "TransForm", each fnTransform([Content])),
TransForm = Table.Combine(AppelFn[TransForm]),
ExpandData = Table.ExpandTableColumn(TransForm, "Data", Table.ColumnNames(TransForm[Data]{0})),
FiltreET = Table.SelectRows(ExpandData, each ([Kind] = "Page") and ([Column1] = "Bénéficiaire du" or [Column1] = "code CB* (?)" or [Column1] = "Date d'expiration#(lf)CB*" or [Column1] = "Montant*" or [Column1] = "Objet de la" or [Column1] = "Nom" or [Column1] = "Société émettrice#(lf)du règlement")),
ColSuppAutres = Table.SelectColumns(FiltreET,{"Column1", "Column2"}),
Index = Table.AddIndexColumn(ColSuppAutres, "Index", 0, 1, Int64.Type),
#"Modulo inséré" = Table.AddColumn(Index, "Modulo", each Number.Mod([Index], 8), type number),
RempMontant2 = Table.ReplaceValue(#"Modulo inséré",each [Column1], each if [Modulo]=7 then [Column1]&" bis" else [Column1],Replacer.ReplaceText,{"Column1"}),
SuppModulo = Table.RemoveColumns(RempMontant2,{"Modulo"}),
IndexLigne = Table.TransformColumns(SuppModulo, {{"Index", each Number.IntegerDivide(_, 8), Int64.Type}}),
Pivot = Table.Pivot(IndexLigne, List.Distinct(IndexLigne[Column1]), "Column1", "Column2", List.Max),
SuppIndex = Table.RemoveColumns(Pivot,{"Index"}),
#"Colonnes renommées" = Table.RenameColumns(SuppIndex,{{"Société émettrice#(lf)du règlement", "SOCIETE"}, {"Bénéficiaire du", "BENEFICAIRE FRS"}, {"Objet de la", "OBJET DE LA DEMANDE"}, {"Montant*", "MONTANT ACHAT"}, {"code CB* (?)", "CODE CB"}, {"Date d'expiration#(lf)CB*", "DATE EXPIRATION CB"}, {"Montant* bis", "MONTANT CB"}, {"Nom", "DEMANDEUR"}}),
#"Type modifié" = Table.TransformColumnTypes(#"Colonnes renommées",{{"DEMANDEUR", type text}, {"SOCIETE", type text}, {"BENEFICAIRE FRS", type text}, {"OBJET DE LA DEMANDE", type text}, {"MONTANT ACHAT", type number}, {"MONTANT CB", type number}, {"CODE CB", Int64.Type}, {"DATE EXPIRATION CB", type date}}),
#"Colonnes permutées" = Table.ReorderColumns(#"Type modifié",{"SOCIETE", "DEMANDEUR", "BENEFICAIRE FRS", "OBJET DE LA DEMANDE", "MONTANT ACHAT", "CODE CB", "MONTANT CB", "DATE EXPIRATION CB"}),
#"Requêtes fusionnées" = Table.NestedJoin(#"Colonnes permutées", {"CODE CB"}, BASE_EXPORT_BQ_SAP, {"CODE CB METTRE MANUELLEMENT"}, "BASE_EXPORT_BQ_SAP", JoinKind.LeftOuter),
#"BASE_EXPORT_BQ_SAP développé" = Table.ExpandTableColumn(#"Requêtes fusionnées", "BASE_EXPORT_BQ_SAP", {"Compte"}, {"SAP FRS.Compte"}),
#"Lignes triées" = Table.Sort(#"BASE_EXPORT_BQ_SAP développé",{{"SAP FRS.Compte", Order.Ascending}})
in
#"Lignes triées"Merci d'avance
Bonjour à tous !
Une proposition ?
Après l'étape d'appel de la fonction, dupliquer le champ "Name" :
= Table.DuplicateColumn(AppelFn, "Name", "NamePDF")Et conserver ce champ pour votre besoin ultérieur.
Hello,
Normal avec la fonction Table.Combine, ça te "concatène" les tables sans garder l'info.
Soit tu passes par une étape ou sur chaque sous table tu ajoutes le nom du pdf dans une nouvelle colonne avant de faire le Table.Combine soit tu utilises la fonction Table.Expand
@+
Edit : JFL, bien le bonjour
Bonjour,
Je n'arrive pas quand je le fait j'ai une colonne qui apparait image 1 et quand je développe j'ai l'image 2 cela multiplie les noms des pdfs puis à l'image 3 je n'arrive pas a avoir mes noms de PDFS.
Ce que je voudrais c'est que la colonne Name à l'image 1 soit répartis dans l'image 3 comme les autres colonnes quand je développe
Après je ne suis pas expert j'ai peux être mal fait je remet le code modifié en dernier
let
fnTransform=let
S = (Paramètre1 as binary) => let
in
Pdf.Tables(Paramètre1, [Implementation="1.3"])
in S,
Source = Folder.Files(Excel.CurrentWorkbook(){[Name="DossierPDF"]}[Content]{0}[Column1]),
FiltrePDF = Table.SelectRows(Source, each [Extension] = ".pdf"),
FiltreFichiers = Table.SelectRows(FiltrePDF, each [Attributes]?[Hidden]? <> true),
AppelFn = Table.AddColumn(FiltreFichiers, "TransForm", each fnTransform([Content])),
#"Personnalisée ajoutée" = Table.AddColumn(AppelFn, "TEST", each Table.DuplicateColumn(AppelFn, "Name", "NamePDF")),
#"TEST développé" = Table.ExpandTableColumn(#"Personnalisée ajoutée", "TEST", {"Name"}, {"Name.1"}),
TransForm = Table.Combine(#"TEST développé"[TransForm]),
ExpandData = Table.ExpandTableColumn(TransForm, "Data", Table.ColumnNames(TransForm[Data]{0})),
FiltreET = Table.SelectRows(ExpandData, each ([Kind] = "Page") and ([Column1] = "Bénéficiaire du" or [Column1] = "code CB* (?)" or [Column1] = "Date d'expiration#(lf)CB*" or [Column1] = "Montant*" or [Column1] = "Objet de la" or [Column1] = "Nom" or [Column1] = "Société émettrice#(lf)du règlement")),
ColSuppAutres = Table.SelectColumns(FiltreET,{"Column1", "Column2"}),
Index = Table.AddIndexColumn(ColSuppAutres, "Index", 0, 1, Int64.Type),
#"Modulo inséré" = Table.AddColumn(Index, "Modulo", each Number.Mod([Index], 8), type number),
RempMontant2 = Table.ReplaceValue(#"Modulo inséré",each [Column1], each if [Modulo]=7 then [Column1]&" bis" else [Column1],Replacer.ReplaceText,{"Column1"}),
SuppModulo = Table.RemoveColumns(RempMontant2,{"Modulo"}),
IndexLigne = Table.TransformColumns(SuppModulo, {{"Index", each Number.IntegerDivide(_, 8), Int64.Type}}),
Pivot = Table.Pivot(IndexLigne, List.Distinct(IndexLigne[Column1]), "Column1", "Column2", List.Max),
SuppIndex = Table.RemoveColumns(Pivot,{"Index"}),
#"Colonnes renommées" = Table.RenameColumns(SuppIndex,{{"Société émettrice#(lf)du règlement", "SOCIETE"}, {"Bénéficiaire du", "BENEFICAIRE FRS"}, {"Objet de la", "OBJET DE LA DEMANDE"}, {"Montant*", "MONTANT ACHAT"}, {"code CB* (?)", "CODE CB"}, {"Date d'expiration#(lf)CB*", "DATE EXPIRATION CB"}, {"Montant* bis", "MONTANT CB"}, {"Nom", "DEMANDEUR"}}),
#"Type modifié" = Table.TransformColumnTypes(#"Colonnes renommées",{{"DEMANDEUR", type text}, {"SOCIETE", type text}, {"BENEFICAIRE FRS", type text}, {"OBJET DE LA DEMANDE", type text}, {"MONTANT ACHAT", type number}, {"MONTANT CB", type number}, {"CODE CB", Int64.Type}, {"DATE EXPIRATION CB", type date}}),
#"Colonnes permutées" = Table.ReorderColumns(#"Type modifié",{"SOCIETE", "DEMANDEUR", "BENEFICAIRE FRS", "OBJET DE LA DEMANDE", "MONTANT ACHAT", "CODE CB", "MONTANT CB", "DATE EXPIRATION CB"}),
#"Requêtes fusionnées" = Table.NestedJoin(#"Colonnes permutées", {"CODE CB"}, BASE_EXPORT_BQ_SAP, {"CODE CB METTRE MANUELLEMENT"}, "BASE_EXPORT_BQ_SAP", JoinKind.LeftOuter),
#"BASE_EXPORT_BQ_SAP développé" = Table.ExpandTableColumn(#"Requêtes fusionnées", "BASE_EXPORT_BQ_SAP", {"Compte"}, {"SAP FRS.Compte"}),
#"Lignes triées" = Table.Sort(#"BASE_EXPORT_BQ_SAP développé",{{"SAP FRS.Compte", Order.Ascending}})
in
#"Lignes triées"Bonjour à tous de nouveau !
Je n'avais pas remarqué le Table.Combine de l'étape Transform !
Dans cette configuration, il faut opter pour la recommandation préconisée par BAROUTE78 : Etendre le champ "Tranform" et choisir ensuite les colonnes à traiter.
Bonjour,
Quand j'ai la table transform et quand je vais dessus pour développer et bien j'ai pas la colonne "Name" qui est 10.pdf, 20.pdf, 30.pdf j'ai seulement le developpement des PDFS, aprés c'est peux être impossible, ce que Baroute78 à dit j'ai pas compris
Cordialement,
Bonsoir à tous !
Le début de votre requête devrait être :
let
fnTransform=let
S = (Paramètre1 as binary) => let
in
Pdf.Tables(Paramètre1, [Implementation="1.3"])
in S,
Source = Folder.Files("E:\USB\_TEMP\Maverick59264\DossierPDF"),
FiltrePDF = Table.SelectRows(Source, each [Extension] = ".pdf"),
FiltreFichiers = Table.SelectRows(FiltrePDF, each [Attributes]?[Hidden]? <> true),
AppelFn = Table.AddColumn(FiltreFichiers, "TransForm", each fnTransform([Content])),
#"TransForm développé" = Table.ExpandTableColumn(AppelFn, "TransForm", {"Id", "Name", "Kind", "Data"}, {"TransForm.Id", "TransForm.Name", "TransForm.Kind", "TransForm.Data"}),L'étape suivant devra développer le champ "TransForm.Data".
Vous pourrez ensuite choisir les colonnes à traiter et poursuivre votre requête.
Hello,
Sur ton étape ci-dessous, déjà il faut que tu mettes ça :
= Table.AddColumn(FiltreFichiers, "Transform", each fnTransform([Content]))[[Name],[Transform]]Puis tu cliques sur la double flèche de la colonne comme encadré en rouge ci-dessous
A partir de là tu as gardé le nom du fichier
Ensuite tu effectues le Table.Expand comme suit :
Est ce que ça fonctionne ?
@+
Hello,
As tu lu mon message correctement ?
Hello,
Sur ton étape ci-dessous, déjà il faut que tu mettes ça :
= Table.AddColumn(FiltreFichiers, "Transform", each fnTransform([Content]))[[Name],[Transform]
Egalement ton Table.Combine n'existera plus dans la requête c'est tout l'objectif de ton sujet
@+
Bonjour Baroute78,
Merci encore cela fonctionne parfaitement, c'est parfait
Cordialement,
