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 Storage | AzureStorage.BlobContents, AzureStorage.Blobs, AzureStorage.DataLake, AzureStorage.DataLakeContents, AzureStorage.Tables |
| Binary | File.Contents |
| Excel | Excel.Workbook, Excel.CurrentWorkbook |
| Folder | Folder.Contents, Folder.Files |
| HDFS | Hdfs.Contents, Hdfs.Files |
| HDInsight | HdInsights.Containers, HdInsight.Contents,HdInsight.Files |
| JSON | Json.Document |
| Pdf.Tables | |
| RData | RData.FromBinary |
| Text/CSV | Csv.Document |
| XML | Xml.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]
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 convivial | Valeur | Commentaires |
| extraValues.List | 0 | Renvoie des colonnes supplémentaires sous forme de liste |
| extraValues.Error | 1 | Lève une erreur |
| extraValues.Ignore | 2 | Ignore les colonnes supplémentaires, par défaut |
- Un 5e argument : l’énumération TextEncoding.Type :
| Nom convivial | Valeur | Commentaires |
| TextEncoding.Utf16, TextEncoding.Unicode | 1200 | Forme binaire Little Endian (UTF16) |
| TextEncoding.Unicode | 1200 | Forme binaire Little Endian (UTF16) |
| TextEncoding.BigEndianUnicode | 1201 | Forme binaire Big Endian (UTF16) |
| TextEncoding.Windows | 1252 | Forme binaire Windows |
| TextEncoding.Ascii | 20127 | Forme binaire ASCII |
| TextEncoding.Utf8 | 65001 | Forme 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 convivial | Valeur | Commentaires |
| CsvStyle.QuoteAfterDelimiter | 0 | Les 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.QuoteToujours | 1 | Les 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 convivial | Valeur | Commentaires |
| QuoteStyle.Aucun | 0 | Les guillemets sont ignorés. Il s'agit de l'option par défaut. |
| QuoteStyle.Csv | 1 | Les 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
- 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]
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 :
| Column1 | Column2 |
| One | 1 |
| Two | 2 |
| Three | 3 |
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 Server | Microsoft SQL Server | Microsoft’s relational database system. | Sql.Database Sql.Databases |
| Microsoft Analysis Services | Microsoft Analysis Services | Refers 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 Access | Microsoft Access | The relational Access Database Engine (ACE), formerly the Jet database engine. | Access.Database |
| Adobe Analytics cubes | Adobe Analytics cubes | Adobe 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 DB2 | IBM DB2 | A relational database system developed by IBM. | DB2.Database |
| IBM Informix | IBM Informix | A relational database system originally developed by Informix, which was acquired by IBM in 2001. | Informix.Database |
| Oracle Essbase | Oracle Essbase | A 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 MySQL | Oracle MySQL | MySQL 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 Database | Oracle Database | Commonly referred to as simply Oracle, Oracle Database is a relational database that supports OLTP and data warehouse workloads. | Oracle.Database |
| PostgreSQL | PostgreSQL | Also simply known as Postgres, PostgresSQL is a free and open-source relational database originally released in 1996. | PostgreSQL.Database |
| SAP HANA | SAP HANA | A column-oriented, in-memory, relational database system developed by SAP. | SapHana.Database |
| SAP Business Warehouse | SAP Business Warehouse | Originally 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 Sybase | SAP Sybase | A relational database system originally created by Sybase and then later acquired by SAP. | Sybase.Database |
| Teradata | Teradata | Teradata’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]