Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

POWERQUERY :: M et Astuces diverses

oguruma

XLDnaute Occasionnel
Bonjour, ci-dessous quelque petites astuces....

Déterminer quelles sont les colonnes à afficher

Tout simplement !
PowerQuery:
let
    Source = TBL_SRC_DATA_Traitements
        [
            [DOMAINE], [APPLI], [OK]
        ]
in
    Source

On adresse directement un RECORD via la source en spécifiant les colonnes à extraire.

Sinon nous aurions procédé comme suit :
PowerQuery:
let
    Source = TBL_SRC_DATA_Traitements,
    TBL_DeleteColumns = Table.RemoveColumns(Source,{"CERTIF_1", "CERTIF_2", "CERTIF_3"})
in
    TBL_DeleteColumns

ou comme cela :
PowerQuery:
let
    Source = TBL_SRC_DATA_Traitements,
    TBl_SelectColumns = Table.SelectColumns(Source,{"DOMAINE", "APPLI", "OK"})

in
    TBl_SelectColumns

Un PROMOTE pas à pas
PowerQuery:
let
    Source = Excel.Workbook(File.Contents(PRM_STR_FichierXLSX), true, true),
    TBL_Sheet = Source{[Item="Traitements",Kind="Sheet"]}[Data]
in
    TBL_Sheet

Construire des propriétés via un RECORD
PowerQuery:
[
    Source = Excel.Workbook(File.Contents(PRM_STR_FichierXLSX), true, true),
    FLD_Sheet = Source{[Item="Traitements",Kind="Sheet"]}[Data],
    FLD_Domaine = FLD_Sheet[[DOMAINE]],
    LST_Domaine = List.Distinct(FLD_Sheet[DOMAINE]),
    FLD_Appli = FLD_Sheet[[APPLI]],
    LST_Appli = FLD_Sheet[APPLI],
    FLD_Certif1 = FLD_Sheet[[CERTIF_1]],
    FLD_Certif2 = FLD_Sheet[[CERTIF_2]],
    FLD_Certif3 = FLD_Sheet[[CERTIF_3]],
    FLD_OK = FLD_Sheet[[OK]],
    FLD_RECORD = FLD_Sheet[[DOMAINE],[APPLI],[CERTIF_1],[CERTIF_2],[CERTIF_3],[OK]],
    FLD_GROUP_BY_DOMAINE=Table.Group(FLD_Sheet, {"DOMAINE"},
        {
            {"Total_Certif_1", each List.Sum([CERTIF_1]), type number},
            {"Total_Certif_2", each List.Sum([CERTIF_2]), type number},
            {"Total_Certif_3", each List.Sum([CERTIF_3]), type number},          
            {"TotalOK", each List.Sum([OK]), type number}
        }
    )

]



Comment les utiliser ? exemples
PowerQuery:
let
    FLD_GROUP_BY_DOMAINE = QRY_RECORD_PROPERTIES[FLD_GROUP_BY_DOMAINE]
in
    FLD_GROUP_BY_DOMAINE
   
   
let
    FLD_GROUP_BY_DOMAINE = QRY_RECORD_PROPERTIES[FLD_RECORD]
in
    FLD_GROUP_BY_DOMAINE
 

Pièces jointes

  • Traitements.txt
    1.3 KB · Affichages: 2
  • Traitements.xlsx
    26.6 KB · Affichages: 3
  • MashUpOtherTricksAndTips_V0.010.xlsx
    29.4 KB · Affichages: 3
Dernière édition:

oguruma

XLDnaute Occasionnel
Bonjour, une petite variante qui permet de gérer les noms des colonnes à afficher dynamiquement via un RECORD, on fait toujours appel à Expression.Evaluate qu'il faut absolument maîtriser de la même manière que le INDIRECT sous Excel

PowerQuery:
let
    STR_Domaine="DOMAINE",
    STR_Appli="APPLI",
    STR_Ok="OK",
    STR_SourceColumns="TBL_SRC_DATA_Traitements [[" & STR_Domaine & "], [" & STR_Appli & "],[" & STR_Ok & "]]",
    TBL_EVAL_STR_SourceColumns=Expression.Evaluate(STR_SourceColumns,[TBL_SRC_DATA_Traitements=TBL_SRC_DATA_Traitements])
in
    TBL_EVAL_STR_SourceColumns
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…