SnowConvert AI - Transact - Redirecionamento Power BI¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
O redirecionamento do Power BI é uma maneira fácil de redefinir as conexões da linguagem M no Power Query Editor. Isso significa que os parâmetros de conexão serão redefinidos para apontar para o contexto do banco de dados de migração do Snowflake. Para o servidor SQL e o Azure Synapse, o método na linguagem M que definiu a conexão é Sql.Database(...). No Snowflake, há um conector que depende de alguns outros parâmetros e a conexão principal é definida pelo método Snowflake.Database(...).
Amostras de padrões de origem¶
Esta seção explicará os casos abordados atualmente pela SnowConvert AI.
Caso de redirecionamento de entidade simples¶
Mesmo uma simples conexão com uma tabela do Power BI requer muitas transformações para ser usada com o conector implícito do Power BI a partir do Snowflake. Nesse caso, a SnowConvert AI adiciona novas variáveis de informação, como banco de dados e esquema, e chama a tabela de origem com o tipo implícito (também pode ser uma exibição).
Além disso, a SnowConvert AI gera um mapeamento entre as colunas para corresponder a caixa de texto com o contexto de migração do banco de dados ou, se possível, com as informações internas do relatório do Power BI.
Transact-SQL | Conexão do Azure Synapse no Power Query Editor
let
Source = Sql.Database("your_connection", "LibraryDatabase"),
dbo_Authors = Source{[Schema="dbo",Item="Authors"]}[Data]
in
dbo_Authors
Conexão do Snowflake SQL no Power Query Editor
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
Caso de redirecionamento de entidade simples com várias linhas¶
Neste caso, as “linhas filtradas” são uma etapa extra na lógica da consulta. Na versão de redirecionamento, a lógica adicional é preservada como está.
Transact-SQL | Conexão do Azure Synapse no Power Query Editor
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"
Conexão do Snowflake SQL no Power Query Editor
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"
Caso de redirecionamento de consulta SQL incorporada¶
A SnowConvert AI vai extrair, migrar e reinserir as consultas SQL incorporadas às conexões. As mensagens de aviso nas consultas migradas podem exigir atenção extra. Nesse caso, a mensagem de aviso não impede que a consulta seja executada no banco de dados do Snowflake.
Transact-SQL | Conexão do Azure Synapse no Power Query Editor
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
Conexão do Snowflake SQL no Power Query Editor
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
Caso de redirecionamento de consulta SQL incorporada com várias linhas¶
Este caso mostra a conexão com consultas SQL e várias linhas de lógica após a lógica de conexão.
Transact-SQL | Conexão do Azure Synapse no Power Query Editor
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"
Conexão do Snowflake SQL no Power Query Editor
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"
Caso de redirecionamento de consulta SQL com renomeação de coluna¶
No momento, os casos de consultas SQL com renomeação de coluna só são aplicados se as informações internas do relatório do Power BI fornecido tiver essas informações.
Transact-SQL | Conexão do Azure Synapse no Power Query Editor
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
Conexão do Snowflake SQL no Power Query Editor
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
Caso de redirecionamento de função para entidade¶
Atualmente, só há suporte para funções no caso de importação de entidades e somente para o Transact.
Conexão Transact-SQL no Power Query Editor
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"
Conexão do Snowflake SQL no Power Query Editor
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"