다음을 통해 공유


탐색 처리

탐색 테이블(또는 탐색 테이블)은 커넥터에 사용자에게 친숙한 환경을 제공하는 핵심 부분입니다. 파워 쿼리 환경은 데이터 원본 함수에 필요한 매개 변수를 입력하고 데이터 원본으로 인증한 후 사용자에게 표시합니다.

TripPin 탐색 테이블입니다.

백그라운드에서 탐색 테이블은 형식에 정의된 특정 메타데이터 필드가 있는 일반 M 테이블 값일 뿐입니다. 데이터 원본 함수가 이러한 필드가 정의된 테이블을 반환하면 파워 쿼리에 탐색기 대화 상자가 표시됩니다. 루트 노드를 마우스 오른쪽 단추로 클릭하고 편집을 선택하여 실제로 기본 데이터를 테이블 값으로 볼 수 있습니다.

Table.ToNavigationTable

함수를 Table.ToNavigationTable 사용하여 탐색 테이블을 만드는 데 필요한 테이블 형식 메타데이터를 추가할 수 있습니다.

참고 항목

현재 이 함수를 복사하여 M 확장에 붙여넣어야 합니다. 나중에 M 표준 라이브러리로 이동될 가능성이 높습니다.

다음 표에서는 이 함수에 대한 매개 변수를 설명합니다.

매개 변수 세부 정보
table 탐색 테이블입니다.
keyColumns 탐색 테이블의 기본 키 역할을 하는 열 이름 목록입니다.
Namecolumn 탐색기에서 표시 이름으로 사용해야 하는 열의 이름입니다.
Datacolumn 표시할 테이블 또는 함수가 포함된 열의 이름입니다.
itemKindColumn 표시할 아이콘의 유형을 결정하는 데 사용할 열의 이름입니다. 열의 유효한 값 목록은 아래를 참조하세요.
itemNameColumn 미리 보기 동작을 결정하는 데 사용할 열의 이름입니다. 일반적으로 itemKind와 동일한 값으로 설정됩니다.
isLeafColumn 리프 노드인지 또는 다른 탐색 테이블을 포함하도록 노드를 확장할 수 있는지 확인하는 데 사용되는 열의 이름입니다.

이 함수는 테이블 형식에 다음 메타데이터를 추가합니다.

필드 매개 변수
NavigationTable.NameColumn Namecolumn
NavigationTable.DataColumn Datacolumn
NavigationTable.ItemKindColumn itemKindColumn
NavigationTable.IsLeafColumn isLeafColumn
Preview.DelayColumn itemNameColumn

ItemKind의 값

다음 항목 종류 값은 각각 탐색 테이블에서 다른 아이콘을 제공합니다.

  • 피드
  • 데이터베이스
  • DatabaseServer
  • 차원
  • 테이블
  • 폴더
  • 함수
  • 보기
  • 시트
  • DefinedName
  • 녹음

예제

플랫 탐색 테이블

다음 코드 샘플에서는 세 개의 테이블과 함수가 있는 플랫 탐색 테이블을 표시합니다.

shared NavigationTable.Simple = () =>
    let
        objects = #table(
            {"Name",       "Key",        "Data",                           "ItemKind", "ItemName", "IsLeaf"},{
            {"Item1",      "item1",      #table({"Column1"}, {{"Item1"}}), "Table",    "Table",    true},
            {"Item2",      "item2",      #table({"Column1"}, {{"Item2"}}), "Table",    "Table",    true},
            {"Item3",      "item3",      FunctionCallThatReturnsATable(),  "Table",    "Table",    true},            
            {"MyFunction", "myfunction", AnotherFunction.Contents,       "Function", "Function", true}
            }),
        NavTable = Table.ToNavigationTable(objects, {"Key"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        NavTable;

shared FunctionCallThatReturnsATable = () =>
    #table({"DynamicColumn"}, {{"Dynamic Value"}});

이 코드는 Power BI Desktop에 다음과 같은 탐색기를 표시합니다.

플랫 탐색 테이블의 샘플입니다.

다중 수준 탐색 테이블

중첩된 탐색 테이블을 사용하여 데이터 집합에 대한 계층적 뷰를 만들 수 있습니다. 이 작업을 수행하려면 해당 행의 IsLeaf 값을 확장할 false 수 있는 노드로 표시하고 열의 서식 Data 을 다른 탐색 테이블로 지정합니다.

shared NavigationTable.Nested = () as table =>
    let
        objects = #table(
            {"Name",       "Key",  "Data",                "ItemKind", "ItemName", "IsLeaf"},{
            {"Nested A",   "n1",   CreateNavTable("AAA"), "Table",    "Table",    false},
            {"Nested B",   "n2",   CreateNavTable("BBB"), "Table",    "Table",    false},
            {"Nested C",   "n3",   CreateNavTable("CCC"), "Table",    "Table",    false}
        }),
        NavTable = Table.ToNavigationTable(objects, {"Key"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        NavTable;

CreateNavTable = (message as text) as table => 
    let
        objects = #table(
            {"Name",  "Key",   "Data",                           "ItemKind", "ItemName", "IsLeaf"},{
            {"Item1", "item1", #table({"Column1"}, {{message}}), "Table",    "Table",    true},
            {"Item2", "item2", #table({"Column1"}, {{message}}), "Table",    "Table",    true}
        }),
        NavTable = Table.ToNavigationTable(objects, {"Key"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        NavTable;

이 코드는 Power BI Desktop에 다음 탐색기를 표시합니다.

계층적 탐색 테이블의 샘플입니다.

동적 탐색 테이블

이러한 기본 사항으로 더 복잡한 기능을 빌드할 수 있습니다. 위의 모든 예제는 탐색 테이블에 하드 코딩된 엔터티를 보여 주지만 지정된 사용자가 사용할 수 있는 엔터티를 기반으로 탐색 테이블을 동적으로 생성하는 방법을 쉽게 확인할 수 있습니다. 동적 탐색 테이블에 대한 몇 가지 주요 고려 사항은 다음과 같습니다.