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
Copy

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
Copy

複数行を持つ単純なエンティティの再ポイントのケース

この場合、「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"
Copy

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

埋め込み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
Copy

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
Copy

複数行を持つ埋め込み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"
Copy

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

埋め込み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
Copy

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
Copy

エンティティケース用関数の再ポイントのケース

現在、関数はエンティティのインポートケースと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"
Copy

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