SnowConvert AI - Transact - Repointage Power BI¶
Applies to
SQL Server
Azure Synapse Analytics
Description¶
Le repointage Power BI est une fonctionnalité qui fournit un moyen simple de redéfinir les connexions du langage M dans l’éditeur Power Query. Cela signifie que les paramètres de connexion seront redéfinis pour pointer vers le contexte de la base de données de migration Snowflake. Pour le serveur SQL et Azure Synapse, la méthode en langage M qui a défini la connexion est Sql.Database(...). Dans Snowflake, il existe un connecteur qui dépend d’autres paramètres et la connexion principale est définie par la méthode Snowflake.Database(...).
Exemples de modèle source¶
Cette section explique les cas actuellement traités par SnowConvert AI.
Cas de repointage d’entité simple¶
Même une simple connexion à une table Power BI nécessite l’utilisation de nombreuses transformations avec le connecteur implicite Power BI de Snowflake. Dans ce cas, SnowConvert AI ajoute de nouvelles variables d’informations telles que la base de données et le schéma, et appelle la table source avec le type implicite (il peut également s’agir d’une vue).
Aussi, SnowConvert AI génère un mappage entre les colonnes pour faire correspondre la casse du texte avec le contexte de migration de la base de données ou, si possible, avec les informations internes du rapport Power BI.
Connexion Transact-SQL | Azure Synapse dans l’éditeur Power Query
let
Source = Sql.Database("your_connection", "LibraryDatabase"),
dbo_Authors = Source{[Schema="dbo",Item="Authors"]}[Data]
in
dbo_Authors
Connexion Snowflake SQL dans l’éditeur Power Query
let
Source = Snowflake.Databases(SF_SERVER_LINK, SF_WAREHOUSE_NAME),
SourceSfDb = Source{[Name=SF_DB_NAME, Kind="Database"]}[Data],
SourceSfSchema = SourceSfDb{[Name="DBO", Kind="Schema"]}[Data],
SourceSfTbl = SourceSfSchema{[Name="BOOKS", Kind="Table"]}[Data],
dbo_Books = Table.RenameColumns(SourceSfTbl, {{ "BOOKID", "BookID"}, { "TITLE", "Title"}, { "AUTHORID", "AuthorID"}, { "PUBLICATIONYEAR", "PublicationYear"}})
in
dbo_Books
Cas de repointage d’entité simple avec plusieurs lignes¶
Dans ce cas, « Lignes filtrées » est une étape supplémentaire dans la logique de la requête. Dans la version de repointage, la logique supplémentaire est conservée telle quelle.
Connexion Transact-SQL | Azure Synapse dans l’éditeur Power Query
let
Source = Sql.Database("your_connection", "mytestdb"),
dbo_Employee = Source{[Schema="dbo",
Item="Employee"]}[Data],
#"Filtered Rows" = Table.SelectRows(dbo_Employee, each Text.StartsWith([name], "John"))
in
#"Filtered Rows"
Connexion Snowflake SQL dans l’éditeur Power Query
let
Source = Snowflake.Databases(SF_SERVER_LINK, SF_WAREHOUSE_NAME),
SourceSfDb = Source{[Name=SF_DB_NAME, Kind="Database"]}[Data],
SourceSfSchema = SourceSfDb{[Name="DBO", Kind="Schema"]}[Data],
SourceSfTbl = SourceSfSchema{[Name="EMPLOYEE", Kind="Table"]}[Data],
dbo_Employee = SourceSfTbl,
#"Filtered Rows" = Table.SelectRows(dbo_Employee, each Text.StartsWith([name], "John"))
in
#"Filtered Rows"
Cas de repointage SQL Query intégré¶
Pour les requêtes SQL intégrées à l’intérieur des connexions, SnowConvert AI extrait, migre et réinsère ces requêtes. Les messages d’avertissement dans les requêtes migrées peuvent nécessiter une attention particulière. Dans ce cas, le message d’avertissement n’arrête pas l’exécution de la requête dans la base de données Snowflake.
Connexion Transact-SQL | Azure Synapse dans l’éditeur Power Query
let
Source = Sql.Database("your_connection", "LibraryDatabase", [Query="SELECT DISTINCT#(lf) B.Title#(lf)FROM#(lf) DBO.Books AS B#(lf)JOIN#(lf) DBO.Authors AS A ON B.AuthorID = A.AuthorID#(lf)JOIN#(lf) DBO.BookGenres AS BG ON B.BookID = BG.BookID#(lf)JOIN#(lf) DBO.Genres AS G ON BG.GenreID = G.GenreID#(lf)WHERE#(lf) A.Nationality = 'American' AND G.Origin = 'USA'#(lf)ORDER BY#(lf) B.Title;", CreateNavigationProperties=false])
in
Source
Connexion Snowflake SQL dans l’éditeur Power Query
let
SfSource = Value.NativeQuery(Snowflake.Databases(SF_SERVER_LINK,SF_WAREHOUSE_NAME,[Implementation="2.0"]){[Name=SF_DB_NAME]}[Data], "--** SSC-FDM-0007 - MISSING DEPENDENT OBJECTS ""DBO.Books"", ""DBO.Authors"", ""DBO.BookGenres"", ""DBO.Genres"" **
SELECT DISTINCT
B.Title
FROM
DBO.Books AS B
JOIN
DBO.Authors AS A
ON B.AuthorID = A.AuthorID
JOIN
DBO.BookGenres AS BG
ON B.BookID = BG.BookID
JOIN
DBO.Genres AS G
ON BG.GenreID = G.GenreID
WHERE
A.Nationality = 'American' AND G.Origin = 'USA'
ORDER BY B.Title", null, [EnableFolding=true]),
Source = Table.RenameColumns(SfSource, {{ "TITLE", "Title"}})
in
Source
Cas de repointage SQL Query avec plusieurs lignes intégré¶
Ce cas illustre la connexion avec les requêtes SQL et plusieurs lignes de logique après la logique de connexion.
Connexion Transact-SQL | Azure Synapse dans l’éditeur Power Query
let
Source = Sql.Database("your_connection", "mytestdb", [Query="SELECT DISTINCT#(lf) P.ProductName,#(lf) P.Category,#(lf) P.StockQuantity#(lf)FROM#(lf) Products AS P#(lf)WHERE#(lf) P.StockQuantity > 0#(lf)ORDER BY#(lf) P.Category ASC;"]),
#"Filtered Rows" = Table.SelectRows(Source, each Text.StartsWith([Name], "Cards"))
in
#"Filtered Rows"
Connexion Snowflake SQL dans l’éditeur Power Query
let
Source = Value.NativeQuery(Snowflake.Databases(SF_SERVER_LINK,SF_WAREHOUSE_NAME,[Implementation="2.0"]){[Name=SF_DB_NAME]}[Data], "--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT ""Products"" **
SELECT DISTINCT
P.ProductName,
P.Category,
P.StockQuantity
FROM
Products AS P
WHERE
P.StockQuantity > 0
ORDER BY P.Category ASC", null, [EnableFolding=true]),
#"Filtered Rows" = Table.SelectRows(Source, each Text.StartsWith([Name], "Cards"))
in
#"Filtered Rows"
Cas de repointage SQL Query avec renommage de colonne intégré¶
En ce moment, le renommage de colonne pour les cas de requêtes SQL est uniquement appliqué si les informations internes du rapport PowerBI fourni contiennent ces informations.
Connexion Transact-SQL | Azure Synapse dans l’éditeur Power Query
let
Source = Sql.Database("your_connection", "SalesSampleDB", [Query="SELECT DISTINCT#(lf) P.ProductName,#(lf) P.Category,#(lf) P.StockQuantity#(lf)FROM#(lf) Products AS P#(lf)WHERE#(lf) P.StockQuantity > 0#(lf)ORDER BY#(lf) P.Category ASC;"])
in
Source
Connexion Snowflake SQL dans l’éditeur Power Query
let
SfSource = Value.NativeQuery(Snowflake.Databases(SF_SERVER_LINK,SF_WAREHOUSE_NAME,[Implementation="2.0"]){[Name=SF_DB_NAME]}[Data], "--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT ""Products"" **
SELECT DISTINCT
P.ProductName,
P.Category,
P.StockQuantity
FROM
Products AS P
WHERE
P.StockQuantity > 0
ORDER BY P.Category ASC", null, [EnableFolding=true]),
Source = Table.RenameColumns(SfSource, {{ "PRODUCTNAME", "ProductName"}, { "CATEGORY", "Category"}, { "STOCKQUANTITY", "StockQuantity"}})
in
Source
Cas de repointage de cas de fonction pour l’entité¶
Actuellement, les fonctions ne sont prises en charge que pour les cas d’importation d’entités et Transact.
Connexion Transact-SQL dans l’éditeur Power Query
let
Source = Sql.Database("your_connection", "mytestdb"),
dbo_MultiParam = Source{[Schema="dbo",Item="MultiParam"]}[Data],
#"Invoked Functiondbo_MultiParam1" = dbo_MultiParam(1,"HELLO")
in
#"Invoked Functiondbo_MultiParam1"
Connexion Snowflake SQL dans l’éditeur Power Query
let
Source = Snowflake.Databases(SF_SERVER_LINK, SF_WAREHOUSE_NAME),
SourceSfDb = Source{[Name="mytestdb, Kind="Database"]}[Data],
SourceSfFunc = (x, y) => Value.NativeQuery(SourceSfDb, "SELECT DBO.MultiParam(" & Text.From(x) & "," & (if y = null then null else ("'" & y & "'")) & ")"),
dbo_MultiParam = SourceSfFunc,
#"Invoked Functiondbo_MultiParam1" = dbo_MultiParam(1,"HELLO")
in
#"Invoked Functiondbo_MultiParam1"