SnowConvert AI - Transact - Power BIの再ポイント¶
Applies to
SQL Server
Azure Synapse Analytics
説明¶
Power BIの再ポイントは、Power QueryエディターでM言語からの接続を簡単に再定義する方法を提供する機能です。これは、接続パラメーターがSnowflake移行データベースコンテキストを指すように再定義されることを意味します。SQL ServerとAzure Synapseの場合、接続を定義したM言語のメソッドは Sql.Database(...) です。Snowflakeでは、他のいくつかのパラメーターに依存するコネクタがあり、メインの接続は Snowflake.Database(...) メソッドで定義されます。
ソースパターンサンプル¶
このセクションでは、現在SnowConvert AIが対応するケースを説明します。
単純なエンティティの再ポイントのケース¶
Power BIからテーブルへの単純な接続であっても、Snowflakeの暗黙的なPower BI コネクタを使用するには、多くの変換が必要です。この場合、SnowConvert AIは、データベースやスキーマなどの新しい情報変数を追加し、暗黙の型(ビューでも可能)でソーステーブルを呼び出します。
また、SnowConvert AIは、列間のマッピングを生成し、テキストケースをデータベース移行コンテキストと一致させるか、可能であれば、Power BIレポート内部情報と一致させます。
Transact-SQL | Power QueryエディターでのAzure Synapseの接続
let
Source = Sql.Database("your_connection", "LibraryDatabase"),
dbo_Authors = Source{[Schema="dbo",Item="Authors"]}[Data]
in
dbo_Authors
Power QueryエディターでのSnowflake SQLの接続
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
複数行を持つ単純なエンティティの再ポイントのケース¶
この場合、「Filtered Rows」はクエリのロジックに追加されたステップです。再ポイント版では、追加ロジックはそのまま保存されます。
Transact-SQL | Power QueryエディターでのAzure Synapseの接続
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"
Power QueryエディターでのSnowflake SQLの接続
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"
埋め込みSQLクエリの再ポイントのケース¶
接続内に埋め込まれたSQLクエリについては、SnowConvert AIはこれらのクエリを抽出、移行、再挿入します。移行されたクエリの警告メッセージには、特に注意が必要な場合があります。この場合、警告メッセージはSnowflakeデータベースでのクエリの実行を停止しません。
Transact-SQL | Power QueryエディターでのAzure Synapseの接続
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
Power QueryエディターでのSnowflake SQLの接続
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
複数行を持つ埋め込みSQLの再ポインティングのケース¶
このケースは、SQLクエリと、接続ロジックの後の複数行のロジックによる接続を示しています。
Transact-SQL | Power QueryエディターでのAzure Synapseの接続
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"
Power QueryエディターでのSnowflake SQLの接続
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"
埋め込みSQLクエリで列の名前を変更するケース¶
現時点では、SQLクエリのケースの列の名前変更は、提供されたPower BIレポートの内部情報にこの情報が含まれている場合にのみ適用されます。
Transact-SQL | Power QueryエディターでのAzure Synapseの接続
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
Power QueryエディターでのSnowflake SQLの接続
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
エンティティケース用関数の再ポイントのケース¶
現在、関数はエンティティのインポートケースとTransactにのみ対応しています。
Power QueryでのTransact-SQLの接続
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"
Power QueryエディターでのSnowflake SQLの接続
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"