Support formation Rapports Power BI

3 | Accès et combinaison des données

  • 100 fonctions standard de récupération de données
  • 350 fonctions de données en tenant compte de ces extensions offrent la possibilité d'écrire des extensions pour récupérer des données à partir de sources supplémentaires
  • Puissantes fonctionnalités de fusion et d’ajout

Accès aux fichiers et dossiers

Azure StorageAzureStorage.BlobContents, AzureStorage.Blobs, AzureStorage.DataLake, AzureStorage.DataLakeContents, AzureStorage.Tables
BinaryFile.Contents
ExcelExcel.Workbook, Excel.CurrentWorkbook
FolderFolder.Contents, Folder.Files
HDFSHdfs.Contents, Hdfs.Files
HDInsightHdInsights.Containers, HdInsight.Contents,HdInsight.Files
JSONJson.Document
PDFPdf.Tables
RDataRData.FromBinary
Text/CSVCsv.Document
XMLXml.Document, Xml.Tables

File.Contents

Renvoi le contenu (binaire) du fichier. Utilisée avec Csv.Document, Excel.Workbook, Json.Document, Xml.Document et Xml.Tables.

Saisir let Source = File.Contents in Source pour afficher :

image(1).png
image(1).png

[image]

Une fonction sans argument renvoi l’aide et les paramètres nécessaires, parfois mal documentés.

Text/CSV (Csv.Document)

4 arguments:

  • Une version binaire du fichier CSV, via la fonction File.Contents(chemin)
  • Un 2e argument optionnel, qui peut être :
    • Vide,
    • un type de table, un nombre de colonnes, une liste ou un enregistrement de paramètres.
  • Un 3e argument: délimiteur, comme #(tab) ou #(2605).
  • Un 4e argument: extraValues, qui détermine la façon de gérer les paramètres supplémentaires :
Nom convivialValeurCommentaires
extraValues.List0Renvoie des colonnes supplémentaires sous forme de liste
extraValues.Error1Lève une erreur
extraValues.Ignore2Ignore les colonnes supplémentaires, par défaut
  • Un 5e argument : l’énumération TextEncoding.Type :
Nom convivialValeurCommentaires
TextEncoding.Utf16, TextEncoding.Unicode1200Forme binaire Little Endian (UTF16)
TextEncoding.Unicode1200Forme binaire Little Endian (UTF16)
TextEncoding.BigEndianUnicode1201Forme binaire Big Endian (UTF16)
TextEncoding.Windows1252Forme binaire Windows
TextEncoding.Ascii20127Forme binaire ASCII
TextEncoding.Utf865001Forme binaire UTF8

Dans le cas d’un enregistrement de paramètres en 2e argument (les 3 autres arguments doivent être vides) :

  • Delimiter: Spécifie que les colonnes des données sont séparées par une virgule (,) ou autre.
  • Columns : Spécifie qu'il y a X colonnes dans les données.
  • Encodage : spécifie la page de codes 1252 (encodage de caractères Windows). Une page de codes est simplement une spécification de la façon dont les caractères imprimables et les caractères non imprimables (tels que les caractères de contrôle tels que le retour chariot et le saut de ligne) sont associés à des numéros uniques.
  • CsvStyle : détermine si les guillemets d'un champ sont uniquement significatifs immédiatement après le délimiteur ou s'ils sont toujours significatifs.
Nom convivialValeurCommentaires
CsvStyle.QuoteAfterDelimiter0Les guillemets n'ont de sens que s'ils sont immédiatement précédés d'un délimiteur. Il s'agit de l'option par défaut.
CsvStyle.QuoteToujours1Les citations sont toujours importantes.
  • QuoteStyle : spécifie que les sauts de ligne sont traités comme la fin de la ligne actuelle, que le saut de ligne se produise ou non dans une valeur entre guillemets.
Nom convivialValeurCommentaires
QuoteStyle.Aucun0Les guillemets sont ignorés. Il s'agit de l'option par défaut.
QuoteStyle.Csv1Les guillemets sont le début d'une chaîne entre guillemets. Deux guillemets représentent des guillemets imbriqués.

Excel (Excel.Workbook)

3 arguments :

  • Une version binaire du fichier Excel, via la fonction File.Contents(chemin)
  • 2e argument : useHeaders. null, true ou false. Prend en compte la première ligne en tant qu’en-tête. Peut être remplacé par Promouvoir les en-têtes.
  • 3e argument : delayTypes, null, true ou false. Analyse automatiquement les types. Meilleure pratique des analystes de données : manuellement (false).

Le 2e argument peut être un enregistrement (le 3e devra être vide) :

  • UseHeaders
  • DelayTypes
  • InferSheetDimensions : null, true ou false (par défaut). Que si format de fichier Open XLM (moderne). Si la valeur true est  spécifiée, la fonction Excel.Workbook ignore les métadonnées de dimensions incluses dans le fichier Excel et déduit la zone d'une feuille de calcul en lisant la feuille de calcul.

Dossiers

Autres connecteurs

  • PDF
  • XML
    • Xml.Tables
    • Xml.Document
  • Azure
    • AzureStorage.Blobs
    • AzureStorage.Tables
    • AzureStorage.BlobContents
    • AzureStorage.DataLake
    • AzureStorage.DataLakeContents

Récupération de contenu Web (Web.BrowserContents)

Utiliser le connecteur Web, indiquer une URL, puis choisir un contenu de la page :

image.png

[image]

Choisir Code HTML ou Texte affiché pour voir la différence de code.

  • Web.BrowserContents(url) : retourne toute la page Web brute.
let
    #"HTML Code" = Web.BrowserContents("https://www.google.com/
search")
in
    #"HTML Code"
  • Html.Table : retourne le texte visible d’un élément, par exemple BODY :
let
    Source = Web.BrowserContents("https://www.google.com/"),
    #"Extracted Table From Html" = Html.Table(Source, {{"Column1", "BODY"}}),
    Column1 = #"Extracted Table From Html"[Column1]{0}
in
    Column1
  • Web.Page : retourne une table qui permet de naviguer dans le DOM de la page (cliquer sur Table dans la colonne Data puis sur Table dans la colonne Children), comme Xml.Document.
let
    Source =
        Web.Page(
            Web.BrowserContents("https://www.google.com/)
Chapter 3
75
        ),
    Data = Source{0}[Data],
    Children = Data{0}[Children]
in
    Children
  • Web.Contents : retourne le contenu en binaire d’une page, comme avec File.Contents.
let
    Source =
        Web.Contents(
            "https://subscription.packtpub.com",
            [
                RelativePath = "search",
                Query = [ query = "power+bi",
                          products = "Book"
                        ],
                Timeout = #duration(0,0,0,30)
            ]
        )
in
    Source
  • Web.Headers
  • WebAction.Request

Investigation des fonctions binaires

40 fonctions, principalement utilisées dans le mode Entrée les données.

Saisir ces données dans ce mode :

Column1Column2
One1
Two2
Three3

et voir le code généré :

let
    Source =
        Table.FromRows(
            Json.Document(
                Binary.Decompress(
                    Binary.FromText(
                        "i45W8s9LVdJRMlSK1YlWCinPB7KNIOyMolSQjLFSbCwA",
                        BinaryEncoding.Base64
                    ),
                    Compression.Deflate
                )
            ),
            let _t = ((type nullable text) meta [Serialized.Text = true]) in
type table [Column1 = _t, Column2 = _t]
        ),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column2", Int64.
Type}})
in
    #"Changed Type"

Accès aux bases de données et aux cubes

Microsoft SQL ServerMicrosoft SQL ServerMicrosoft’s relational database system.Sql.Database
Sql.Databases
Microsoft Analysis ServicesMicrosoft Analysis ServicesRefers to SQL Server Analysis Services (SSAS) and Azure Analysis Services (AAS). Supports bothtabular and multidimensional cubes. Tabularcubes use Data Analysis Expressions (DAX) for queries and calculations while Multidimensional cubes use Multidimensional Expressions (MDX) for the same.AnalysisServices.
Database
AnalysisServices.
Databases
Microsoft AccessMicrosoft AccessThe relational Access Database Engine (ACE), formerly the Jet database engine.Access.Database
Adobe Analytics cubesAdobe Analytics cubesAdobe Experience Cloud’s cube analytics service, a leading system for web analytics. Adobe Experience Cloud was formerly known as Adobe Marketing Cloud. Adobe Systems acquired the analytics components of Adobe Experience Cloud from Omniture.AdobeAnalytics.Cubes
IBM DB2IBM DB2A relational database system developed by IBM.DB2.Database
IBM InformixIBM InformixA relational database system originally developed by Informix, which was acquired by IBM in 2001.Informix.Database
Oracle EssbaseOracle EssbaseA multidimensional cube system originally developed by Arbor Software Corporation, which merged with Hyperion Software in 1998. Oracle later acquired Hyperion Solutions Corporation and originally marketed Essbase as DB2 OLAP Server.Essbase.Cubes
Oracle MySQLOracle MySQLMySQL is a free and open-source relational database released under the GNU General Public License in 1995. Originally owned and sponsored by the company MySQL AB, which was acquired by Sun Microsystems, which was itself acquired by Oracle in 2010.MySQL.Database
Oracle DatabaseOracle DatabaseCommonly referred to as simply Oracle, Oracle Database is a relational database that supports OLTP and data warehouse workloads.Oracle.Database
PostgreSQLPostgreSQLAlso simply known as Postgres, PostgresSQL is a free and open-source relational database originally released in 1996.PostgreSQL.Database
SAP HANASAP HANAA column-oriented, in-memory, relational database system developed by SAP.SapHana.Database
SAP Business WarehouseSAP Business WarehouseOriginally a relational database, SAP’s Business
Warehouse later evolved to leverage the SAP HANA in-memory database and provide advanced OLAP functionality.
SapBusinessWarehouse.
Cubes
SAP SybaseSAP SybaseA relational database system originally created by Sybase and then later acquired by SAP.Sybase.Database
TeradataTeradataTeradata’s relational database system.Teradata.Database

Travailler avec des protocoles de données standard

Adressage de connecteurs supplémentaires

Combiner et assembler des données

  • Table.Combine
let
    Source = Table.Combine( {Table1, Table2})
in
    Source
  • Table.NestedJoin
    • Accueil > Fusionner des requêtes
let
    Source = Table.NestedJoin(Table1, {"ID"}, Table2, {"ID"}, "NouvelleColonne", JoinKind.LeftOuter)
in
    Source
  • Table.Join
Table.Join(
    Table.FromRecords({
        [CustomerID = 1, Name = "Bob", Phone = "123-4567"],
        [CustomerID = 2, Name = "Jim", Phone = "987-6543"],
        [CustomerID = 3, Name = "Paul", Phone = "543-7890"],
        [CustomerID = 4, Name = "Ringo", Phone = "232-1550"]
    }),
    "CustomerID",
    Table.FromRecords({
        [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0],
        [OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0],
        [OrderID = 3, CustomerID = 2, Item = "Fishing net", Price = 25.0],
        [OrderID = 4, CustomerID = 3, Item = "Fish tazer", Price = 200.0],
        [OrderID = 5, CustomerID = 3, Item = "Bandaids", Price = 2.0],
        [OrderID = 6, CustomerID = 1, Item = "Tackle box", Price = 20.0],
        [OrderID = 7, CustomerID = 5, Item = "Bait", Price = 3.25]
    }),
    "CustomerID"
)
  • Table.FuzzyNestedJoin et Table.FuzzyJoin
    • Correspondance floue
image.png

[image]