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
Copy

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
Copy

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"
Copy

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"
Copy

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
Copy

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
Copy

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"
Copy

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"
Copy

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
Copy

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
Copy

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"
Copy

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"
Copy