다음을 통해 공유


데이터 원본 경로 처리

M 엔진은 종류와 경로의 조합을 사용하여 데이터 원본을 식별합니다. 쿼리 평가 중에 데이터 원본이 발견되면 M 엔진은 일치하는 자격 증명을 찾으려고 시도합니다. 자격 증명을 찾을 수 없는 경우 엔진은 파워 쿼리에서 자격 증명 프롬프트를 생성하는 특별한 오류를 반환합니다.

Kind 값은 데이터 원본 종류 정의에서 가져옵니다.

경로 값은 데이터 원본 함수필수 매개 변수에서 파생됩니다. 선택적 매개 변수는 데이터 원본 경로 식별자에 포함되지 않습니다. 따라서 데이터 원본 종류와 연결된 모든 데이터 원본 함수에는 동일한 매개 변수가 있어야 합니다. 형식 Uri.Type의 단일 매개 변수가 있는 함수에 대한 특수 처리가 있습니다. 자세한 내용은 Uri 매개 변수를 사용하여 Functions로 이동합니다.

Power BI Desktop의 데이터 원본 설정 대화 상자에 자격 증명이 저장되는 방법의 예를 볼 수 있습니다. 이 대화 상자에서 종류는 아이콘으로 표시되고 경로 값은 텍스트로 표시됩니다.

데이터 원본 설정 자격 증명의 스크린샷

참고 항목

개발 중에 데이터 원본 함수의 필수 매개 변수를 변경하면 이전에 저장된 자격 증명이 더 이상 작동하지 않습니다(경로 값이 더 이상 일치하지 않으므로). 데이터 원본 함수 매개 변수를 변경할 때마다 저장된 자격 증명을 삭제해야 합니다. 호환되지 않는 자격 증명이 발견되면 런타임에 오류가 발생할 수 있습니다.

데이터 원본 경로 형식

데이터 원본의 경로 값은 데이터 원본 함수의 필수 매개 변수에서 파생됩니다. 필수 매개 변수는 함수의 메타데이터에 추가하여 DataSource.Path = false 경로에서 제외할 수 있습니다. 자세한 내용은 데이터 원본 경로에서 필수 매개 변수 제외로 이동합니다.

기본적으로 Power BI Desktop의 데이터 원본 설정 대화 상자와 자격 증명 프롬프트에서 실제 문자열 값을 볼 수 있습니다. 데이터 원본 종류 정의에 값이 Label 포함되어 있으면 레이블 값이 대신 표시됩니다.

예를 들어 HelloWorldWithDocs 샘플데이터 원본 함수에는 다음 서명이 있습니다.

HelloWorldWithDocs.Contents = (message as text, optional count as number) as table => ...

함수에는 단일 필수 매개 변수(message) 형식 text이 있으며 데이터 원본 경로를 계산하는 데 사용됩니다. 선택적 매개 변수(count)는 무시됩니다. 경로는 다음과 같이 표시됩니다.

자격 증명 프롬프트

경로가 있는 자격 증명 프롬프트의 스크린샷.

데이터 원본 설정 UI

데이터 원본 설정 UI의 스크린샷.

레이블 값이 정의되면 데이터 원본 경로 값이 표시되지 않습니다.

레이블이 정의된 데이터 원본 설정의 스크린샷

참고 항목

사용자가 입력한 다른 자격 증명을 구분할 수 없으므로 함수에 필요한 매개 변수가 있는 경우 데이터 원본에 대한 레이블을 포함하지 않는 것이 좋습니다. 데이터 커넥터가 자체 사용자 지정 데이터 원본 경로를 표시할 수 있도록 나중에 이를 개선하기를 희망합니다.

데이터 원본 경로에서 필수 매개 변수 제외

함수 매개 변수가 필요하지만 데이터 원본 경로의 일부로 포함되지 않으려면 함수 설명서 메타데이터에 추가할 DataSource.Path = false 수 있습니다. 이 속성은 함수에 대한 하나 이상의 매개 변수에 추가할 수 있습니다. 이 필드는 데이터 원본 경로에서 값을 제거합니다(즉, 함수에 TestConnection 더 이상 전달되지 않음). 따라서 데이터 원본을 식별하거나 사용자 자격 증명을 구분하는 데 필요하지 않은 매개 변수에만 사용해야 합니다.

예를 들어 HelloWorldWithDocs 샘플커넥터에는 다른 값에 대해 서로 다른 message 자격 증명이 필요합니다. 매개 변수에 message 추가 DataSource.Path = false 하면 데이터 원본 경로 계산에서 제거되어 커넥터를 "싱글톤"으로 만듭니다. 모든 호출 HelloWorldWithDocs.Contents 은 동일한 데이터 원본으로 처리되며 사용자는 자격 증명을 한 번만 제공합니다.

HelloWorldType = type function (
    message as (type text meta [
        DataSource.Path = false,
        Documentation.FieldCaption = "Message",
        Documentation.FieldDescription = "Text to display",
        Documentation.SampleValues = {"Hello world", "Hola mundo"}
    ]),
    optional count as (type number meta [
        Documentation.FieldCaption = "Count",
        Documentation.FieldDescription = "Number of times to repeat the message",
        Documentation.AllowedValues = { 1, 2, 3 }
    ]))
    as table meta [
        Documentation.Name = "Hello - Name",
        Documentation.LongDescription = "Hello - Long Description",
        Documentation.Examples = {[
            Description = "Returns a table with 'Hello world' repeated 2 times",
            Code = "HelloWorldWithDocs.Contents(""Hello world"", 2)",
            Result = "#table({""Column1""}, {{""Hello world""}, {""Hello world""}})"
        ],[
            Description = "Another example, new message, new count!",
            Code = "HelloWorldWithDocs.Contents(""Goodbye"", 1)",
            Result = "#table({""Column1""}, {{""Goodbye""}})"
        ]}
    ];

Uri 매개 변수가 있는 함수

URI 기반 식별자가 있는 데이터 원본은 매우 일반적이므로 Uri 기반 데이터 원본 경로를 처리할 때 파워 쿼리 UI에 특수한 처리가 있습니다. Uri 기반 데이터 원본이 발견되면 자격 증명 대화 상자는 사용자가 전체 경로(및 그 사이의 모든 경로)가 아닌 기본 경로를 선택할 수 있는 드롭다운을 제공합니다.

자격 증명이 적용되는 설정 경로를 보여 주는 자격 증명 대화 상자의 스크린샷

Uri.Type M 언어의 기본 형식이 아닌 기록된 형식이므로 Value.ReplaceType 함수를 사용하여 텍스트 매개 변수를 URI로 처리해야 함을 나타내야 합니다.

shared GithubSample.Contents = Value.ReplaceType(Github.Contents, type function (url as Uri.type) as any);