다음을 통해 공유


TripPin 1부 - OData 서비스에 대한 데이터 커넥터

이 다중 파트 자습서에서는 파워 쿼리에 대한 새 데이터 원본 확장의 생성에 대해 설명합니다. 이 자습서는 순차적으로 수행됩니다. 각 단원은 이전 단원에서 만든 커넥터를 기반으로 하여 커넥터에 새 기능을 증분 방식으로 추가합니다.

이 단원에서는 다음을 수행합니다.

  • 파워 쿼리 SDK를 사용하여 새 데이터 커넥트or 프로젝트 만들기
  • 원본에서 데이터를 끌어오는 기본 함수 작성
  • 파워 쿼리 SDK에서 커넥터 테스트
  • Power BI Desktop에 커넥터 등록

기본 OData 커넥터 만들기

이 섹션에서는 새 Data 커넥트or 프로젝트를 만들고, 몇 가지 기본 정보를 제공하고, 파워 쿼리 SDK에서 테스트합니다.

Visual Studio Code를 엽니다. 새 작업 영역을 만든 다음 새 확장 프로젝트를 만드는 것이 좋습니다. 새 확장 프로젝트를 만들려면 탐색기를 열고 파워 쿼리 SDK 섹션에서 확장 프로젝트 만들기 단추를 선택합니다.

파워 쿼리 SDK 확장 프로젝트를 만드는 옵션을 강조하는 스크린샷.

이 단추를 선택하면 새 프로젝트의 이름을 입력하라는 메시지가 표시됩니다. 이 새 프로젝트의 TripPin이름을 지정합니다.

파워 쿼리 SDK를 사용하여 TripPin이라는 새 확장 프로젝트를 만든 스크린샷.

TripPin.pq 파일을 열고 다음 커넥터 정의에 붙여넣습니다.

section TripPin;

[DataSource.Kind="TripPin", Publish="TripPin.Publish"]
shared TripPin.Feed = Value.ReplaceType(TripPinImpl, type function (url as Uri.Type) as any);

TripPinImpl = (url as text) =>
    let
        source = OData.Feed(url)
    in
        source;

// Data Source Kind description
TripPin = [
    Authentication = [
        Anonymous = []
    ],
    Label = "TripPin Part 1 - OData"
];

// Data Source UI publishing description
TripPin.Publish = [
    Beta = true,
    Category = "Other",
    ButtonText = { "TripPin OData", "TripPin OData" }
];

이 커넥터 정의에는 다음이 포함됩니다.

  • TripPin 커넥터에 대한 데이터 원본 정의 레코드
  • 암시적(익명)이 이 원본에 대한 유일한 인증 유형이라는 선언
  • OData.Feed를 호출하는 구현이 있는 함수(TripPinImpl)
  • 매개 변수 형식을 로 설정하는 공유 함수(TripPin.Feed) Uri.Type
  • 파워 쿼리 데이터 가져오기 대화 상자에 커넥터를 표시할 수 있는 데이터 원본 게시 레코드

TripPin.query.pq 파일을 엽니다. 현재 내용을 내보낸 함수에 대한 호출로 바꿉니다.

TripPin.Feed("https://services.odata.org/v4/TripPinService/")

커넥터를 테스트하려면 커넥터를 빌드해야 합니다. 이렇게 하려면 터미널로 이동하여 빌드 작업 실행... 옵션(바로 가기 키 Ctrl + Shift + B)을 선택합니다. MakePQX 옵션을 선택하는 것이 좋지만 빌드에 사용할 수 있는 옵션 중 하나가 작동해야 합니다.

커넥터를 테스트하기 전에 빌드 작업을 실행하는 것을 보여주는 스크린샷.

이 작업의 결과는 빌드된 커넥터가 TripPin.mez저장되는 새 Bin 폴더를 만듭니다.

mez 확장명 및 TripPin.mez 이름이 있는 커넥터 파일이 있는 새 bin 폴더의 스크린샷

<project.query.pq> 파일은 Power BI Desktop의 bin 폴더에 배포하지 않고도 확장을 테스트하는 데 사용됩니다. 파워 쿼리 SDK 내에서 사용할 수 있는 도구 사용:

  1. 자격 증명설정하는 옵션을 선택합니다.
  2. 데이터 원본으로 TripPin을 선택합니다.
  3. TripPin.query.pq 파일을 쿼리/테스트 파일로 선택합니다.
  4. 익명을 인증 종류로 선택합니다.

출력 대화 상자에서 데이터 원본에 대한 자격 증명 및 생성된 각 자격 증명에 대한 세부 정보를 설정했음을 확인하는 메시지가 나타납니다.

.query.pq 파일에 전달된 URL을 사용하여 TripPin connectur에 대해 새로 만든 인증의 세부 정보를 표시하는 출력 대화 상자의 스크린샷

참고 항목

항상 모든 자격 증명 지우기 명령을 사용하여 자격 증명지우거나 파워 쿼리 SDK 도구 내에서 자격 증명 나열 명령을 사용하여 사용 가능한 자격 증명을 검사 수 있습니다.

이제 자격 증명이 적용된 상태에서 TripPin.query.pq 파일을 선택하고 문서에서 바로 선택하여 현재 파워 쿼리 파일을 평가하거나 파워 쿼리 SDK 도구에서 현재 파일을 평가하는 옵션을 사용합니다.

현재 파워 쿼리 파일을 평가하는 여러 대안의 스크린샷.

출력 대화 상자에는 평가 결과 메시지와 PQTest라는 이름의 새 창이 표시됩니다.

실행된 평가 결과를 표시하는 PQTest 결과 창의 스크린샷

PQTest 결과 창은 다음 세 개의 탭으로 구성됩니다.

  • 출력: 표에 데이터의 미리 보기를 표시합니다.
  • 요약: StartTime, EndTime, Duration, 평가에 사용된 파일, 상태 등과 같은 일반 평가 세부 정보입니다.
  • DataSource: Kind, 함수 이름 및 경로에서 사용된 데이터 원본에 대한 정보를 제공합니다.

테스트 파일에서 몇 가지 다른 OData URL을 사용해 보고 다른 결과가 반환되는 방식을 확인할 수 있습니다. 예시:

  • https://services.odata.org/v4/TripPinService/Me
  • https://services.odata.org/v4/TripPinService/GetPersonWithMostFriends()
  • https://services.odata.org/v4/TripPinService/People

TripPin.query.pq 파일에는 단일 문, let 문 또는 전체 섹션 문서가 포함될 수 있습니다.

let
    Source = TripPin.Feed("https://services.odata.org/v4/TripPinService/"),
    People = Source{[Name="People"]}[Data],
    SelectColumns = Table.SelectColumns(People, {"UserName", "FirstName", "LastName"})
in
    SelectColumns

Important

작업할 때 항상 파일을 저장해야 합니다. TripPin.pq 파일을 변경하는 경우 항상 후속 빌드 작업을 트리거하여 최신 버전의 커넥터에 대해 테스트하고 있는지 확인해야 합니다.

Fiddler를 열어 HTTP 트래픽을 캡처하고 쿼리를 실행합니다. 매시업 컨테이너 프로세스에서 생성된 services.odata.org 대한 몇 가지 다른 요청이 표시됩니다. 서비스의 루트 URL에 액세스하면 302 상태 더 긴 버전의 URL로 리디렉션되는 것을 볼 수 있습니다. 다음 리디렉션은 기본 라이브러리 함수에서 "무료로" 가져오는 또 다른 동작입니다.

URL을 살펴보면 문에서 발생한 쿼리 폴딩을 볼 수 있다는 점에 유의 SelectColumns 해야 합니다. https://services.odata.org/v4/TripPinService/People?$select=UserName%2CFirstName%2CLastName

쿼리에 더 많은 변환을 추가하는 경우 생성된 URL에 미치는 영향을 확인할 수 있습니다.

이 동작은 주의해야 합니다. 명시적 폴딩 논리를 구현하지 않았더라도 커넥터는 OData.Feed 함수에서 이러한 기능을 상속합니다. M 문은 작성할 수 있습니다. 필터 컨텍스트는 가능하면 한 함수에서 다른 함수로 흐릅니다. 커넥터 내에서 사용되는 데이터 원본 함수가 인증 컨텍스트 및 자격 증명을 상속하는 방식과 개념이 비슷합니다. 이후 단원에서는 네이티브 폴딩 기능이 있는 OData.Feed 사용을 그렇지 않은 Web.Contents바꿉니다. 동일한 수준의 기능을 얻으려면 인터페이스를 Table.View 사용하고 고유한 명시적 접기 논리를 구현해야 합니다.

Power BI Desktop에서 확장 로드

Power BI Desktop에서 확장을 사용하려면 커넥터 프로젝트의 출력 파일(TripPin.mez)을 Custom 커넥트ors 디렉터리에 복사해야 합니다.

  1. [내 문서]\Power BI Desktop\Custom 커넥트ors 디렉터리를 만듭니다.
  2. 확장 파일(TripPin.mez)을 이 디렉터리에 복사합니다.
  3. Power BI Desktop에서 유효성 검사 또는 경고 없이 확장이 로드되도록 허용하는 옵션(권장되지 않음)을 선택합니다(파일>옵션 및 설정>옵션>보안>데이터 확장명 아래).
  4. Power BI Desktop을 다시 시작합니다.
  5. 데이터 가져오기 대화 상자를 표시하려면 [데이터 > 가져오기]를 선택합니다.

검색 상자에 이름을 입력하여 확장을 찾을 수 있습니다.

데이터 가져오기 대화 상자

함수 이름을 선택하고 커넥트 선택합니다. 타사 메시지가 나타납니다. 계속하려면 [계속]을 선택합니다. 이제 함수 호출 대화 상자가 나타납니다. 서비스의 루트 URL(https://services.odata.org/v4/TripPinService/)을 입력하고 확인을 선택합니다.

함수를 호출합니다.

이 데이터 원본에 액세스하는 것은 이번이 처음이므로 자격 증명에 대한 프롬프트가 표시됩니다. 가장 짧은 URL이 선택되어 있는지 확인한 다음 커넥트 선택합니다.

익명으로 설정된 자격 증명 프롬프트 이미지와 가장 짧은 URL로 설정된 수준 설정

간단한 데이터 테이블을 가져오는 대신 탐색기가 나타납니다. OData.Feed 함수는 파워 쿼리 환경에서 탐색 테이블로 표시하는 것으로 알고 있는 특수 메타데이터가 있는 테이블을 반환하기 때문입니다. 이 연습에서는 이후 단원에서 고유한 탐색 테이블을 만들고 사용자 지정하는 방법을 설명합니다.

탐색 테이블.

Me 테이블을 선택한 다음 데이터 변환을 선택합니다. 열에는 이미 할당된 형식이 있습니다(대부분). 이는 기본 OData.Feed 함수의 또 다른 기능입니다. Fiddler에서 요청을 보면 서비스의 $metadata 문서를 가져온 것을 볼 수 있습니다. 엔진의 OData 구현은 서비스의 스키마, 데이터 형식 및 관계를 결정하기 위해 이 작업을 자동으로 수행합니다.

나 기록.

결론

이 단원에서는 OData.Feed 라이브러리 함수를 기반으로 하는 간단한 커넥터를 만드는 단계를 안내했습니다. 보셨듯이 기본 함수를 통해 완벽하게 작동하는 커넥터를 사용하도록 설정하려면 논리가 OData 거의 필요하지 않습니다. ODBC와 같은 기타 확장성 사용 함수 DataSource는 비슷한 기능을 제공합니다.

다음 단원에서는 OData.Feed 사용을 덜 지원되는 함수인 Web.Contents로 바꿉니다. 각 단원에서는 사용자 지정 커넥터가 OData.Feed와 동일한 범위의 기능을 지원할 때까지 페이징, 메타데이터/스키마 검색 및 OData 쿼리 구문에 대한 쿼리 폴딩을 포함하여 더 많은 커넥터 기능을 구현합니다.

다음 단계

TripPin 2부 - REST 서비스에 대한 데이터 커넥트or