SnowConvert AI - Transact - Power BI 재포인팅

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

Power BI 재포인팅은 파워 쿼리 편집기에서 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 | 파워 쿼리 편집기의 Azure Synapse Connection

let
    Source = Sql.Database("your_connection", "LibraryDatabase"),
    dbo_Authors = Source{[Schema="dbo",Item="Authors"]}[Data]
in
    dbo_Authors
Copy

파워 쿼리 편집기의 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

여러 줄 재포인팅을 포함하는 간단한 엔터티 사례

In this case “Filtered Rows” is an additional step into the logic of the query. In the repointing version, the additional logic is preserved as it is.

Transact-SQL | 파워 쿼리 편집기의 Azure Synapse Connection

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

파워 쿼리 편집기의 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 | 파워 쿼리 편집기의 Azure Synapse Connection

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

파워 쿼리 편집기의 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 | 파워 쿼리 편집기의 Azure Synapse Connection

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

파워 쿼리 편집기의 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 쿼리 사례

At the moment, column renaming for SQL queries cases are only applied if the internal information of the provided Power BI report contains this information.

Transact-SQL | 파워 쿼리 편집기의 Azure Synapse Connection

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

파워 쿼리 편집기의 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에서만 지원됩니다.

파워 쿼리 편집기의 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

파워 쿼리 편집기의 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