다음을 추가하여 내장된 대시보드를 사용자 지정할 수 있습니다.
사전 필터. Charts 임베딩 SDK에서
preFilter
옵션을 사용하거나 iframe URL에 다양한 쿼리 매개변수를 추가합니다.필터. Charts 임베딩 SDK에서
filter
옵션을 사용하거나 iframe URL에 다양한 쿼리 매개변수를 추가합니다.
사전 필터와 필터를 모두 사용하는 것이 선택 사항인 경우에도 동일한 차트 에서 사용할 수 있습니다. 사전 필터(지정된 경우)는 항상 뷰 이후와 대시보드의 쿼리 및 필터 이전에 실행 됩니다. 파이프라인 세그먼트의 순서에 학습 보려면 집계 파이프라인 을 참조하세요.
필터링 가능한 필드 지정
대시보드 작성자 는 임베딩 애플리케이션 코드로 설정하다 하거나 대시보드 뷰어가 추가한 사전 필터 및 필터에 포함할 수 있는 필드를 지정합니다. 대시보드 작성자는 특정 필드만 필터링하도록 허용하여 데이터에 액세스 를 제한할 수 있습니다. 기본값 필드는 허용되지 않으므로 하나 이상의 필드 를 명시적으로 허용할 때까지 대시보드 를 필터링할 수 없습니다.
필터링 가능한 필드를 정의하려면 다음을 수행합니다.
원하는 대시보드 에 대해 다음을 클릭합니다. 버튼을 클릭하고 드롭다운에서 Embed 를 선택합니다.
Allowed filter fields 섹션에서 다음을 클릭합니다. 버튼을 클릭합니다.
참고
이 옵션은 인증되지 않음 또는 인증 된 임베딩 액세스를 이미 활성화한 경우에만 표시됩니다.
대시보드 뷰어가 다음 기준으로 데이터를 필터링할 수 있는 필드를 지정할 수 있습니다.
드롭다운을 사용하여 필드 선택
드롭다운에 나열되지 않은 필드를 추가하기 위해 수동으로 값을 입력하는 경우
선택 Allow all fields in the data source used in this dashboard
원하는 필드를 모두 선택했으면 드롭다운 아래의 Save 를 클릭합니다.
대시보드를 렌더링하는 대시보드 뷰어 및 애플리케이션은 이제 지정된 필드를 기반으로 하는 필터를 사용하여 원본 대시보드 데이터의 하위 집합을 표시할 수 있습니다. 뷰어가 허용된 필터 필드 목록에 포함되지 않은 필드에 필터를 사용하려고 하면 Atlas Charts에서 오류를 반환합니다.
내장된 문서가 있는 필드에 필터링 가능한 하위 필드 지정
내장된 문서가 값인 Allowed filter fields 목록에 필드를 추가하는 경우 허용하려는 각 개별 하위 필드도 지정해야 합니다.
예시
다음 문서를 살펴보세요.
{ "name": "Alice", "favorites" : { "color": "green", "animal": "turtle", "season": "autumn" } }
허용된 필드 목록에 favorites
필드만 추가하는 경우 최종 사용자가 favorites
의 하위 필드를 필터링할 수 있는 권한을 부여하지 않습니다 . 대신 favorites.color
, favorites.animal
또는 favorites.season
를 지정하여 목록에 하나 이상의 하위 필드를 개별적으로 추가할 수 있습니다.
iframe에 포함된 대시보드에서 데이터 사전 필터링
임베딩된 차트 및 많은 수의 컬렉션이 있는 대시보드에 사전 필터를 사용합니다. 사전 필터는 포함된 차트 파이프라인 의 초기 단계에서 실행 되며 다음과 같은 결과를 얻을 수 있습니다.
데이터를 조기에 필터링하여 쿼리 실행 시간 단축
보기 후 쿼리 실행 전에 필터를 적용하고 애그리게이션이 포함된 쿼리에 필터를 적용합니다.
사전 필터는 필터와 정확히 동일하게 작동하며 동일한 구문을 사용합니다. 유일한 차이점은 뷰 이후와 쿼리 및 필터가 시작되기 전에 실행 된다는 것입니다. 파이프라인 세그먼트의 순서에 학습 보려면 집계 파이프라인 을 참조하세요.
iframe에 임베드된 대시보드에서 데이터 필터링
iframe에 포함된 대시보드에 지정된 MQL 필터와 일치하는 데이터만 표시하려면 filter
쿼리 매개변수를 사용합니다.
Unauthenticated 대시보드 에서는 filter
쿼리 매개변수만 사용할 수 있습니다. 인증되지 않은 대시보드의 경우 대시보드 작성자 는 임베딩 애플리케이션 코드로 설정하다 한 필터에 포함하거나 대시보드 뷰어가 추가할 수 있는 필드를 지정합니다. 필터링 가능한 필드를 지정하는 방법을 학습 보려면 필터링 가능한 필드 지정을 참조하세요.
필터 구문
필터에 사용된 필드가 필터링 가능한 허용 필드 목록에있는 경우 MQL 문서를 filter
쿼리 매개변수로 지정할 수 있습니다.
필터는 $match 쿼리에 사용된 형식과 일치해야 하며 다음 중 하나여야 합니다.
최상위 쿼리
예시
{ "quantity": { $gte: 20 } } 또는 부울 표현식 내에서 ( $and, $nor, $or )
예시
{ $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] }
참고
필터 매개변수의 특수 문자는 URL 인코딩해야 합니다.
예시
다음 iframe src
URL은 가 이상인 문서만 표시하는 대시보드를 렌더링합니다.imdb.rating
8
https://charts.mongodb.com/charts-atlasproject1-piocy/embed/dashboards? id=93584ddb-1115-4a12-afd9-5129e47bbb0d& filter={"imdb.rating":%20{$gte:%208}}
URL은 {"imdb.rating":%20{$gte:%208}}
의 인코딩된 filter
매개변수를 사용합니다. 디코딩된 이 필터는 다음과 같습니다.
{"imdb.rating": {$gte: 8}}
SDK가 포함된 대시보드에서 데이터 사전 필터링
preFilter
옵션을 사용하여 내장된 대시보드 에 사전 필터 를 추가할 수 있습니다. 사전 필터링을 사용하면 대시보드 작성자가 쿼리 를 실행하기 전에 필터하다 를 실행 수 있습니다.
Embed 모달에서 사전 필터에 포함할 필드를 지정해야 합니다. Embed 모달에는 필터링을 허용할 수 있는 필드의 드롭다운 메뉴가 포함되어 있습니다.
다음은 preFilter
옵션을 사용하여 오스트레일리아의 문서만 나타냅니다.
createDashboard({ baseUrl: '<your-base-url>', dashboardId: '<your-chart-id>', width: 500, height: 500, preFilter: { "address.country": "Australia" } })
SDK와 함께 임베딩된 대시보드에서 데이터 필터링
filter
옵션을 사용하여 내장된 대시보드에 필터 를 추가할 수 있습니다. 필터링을 사용하면 대시보드 작성자가 지정된 MQL 필터와 일치하는 내장된 대시보드의 데이터만 표시할 수 있습니다.
Embed 모달에서 필터하다 에 포함할 필드를 지정해야 합니다. Embed 모달에는 필터링을 허용할 수 있는 필드의 드롭다운 메뉴가 포함되어 있습니다.
다음은 filter
옵션을 사용하여 total
필드가 100
보다 큰 문서만 나타냅니다.
createDashboard({ baseUrl: '<your-base-url>', dashboardId: '<your-dashboard-id>', width: 500, height: 500, filter: { "total": { "$gt": 100 } } })
사용자별 필터 삽입
Authenticated 액세스가 필요한 대시보드를 포함하는 경우 Injected function 설정을 사용하여 대시보드를 보는 각 사용자에게 특정한 MongoDB 필터 문서를 삽입할 수 있습니다. 이 함수는 context.token
을(를) 통해 Embedding 인증 제공자의 토큰에 액세스할 수 있으며 토큰을 기반으로 대시보드 데이터를 필터링할 수 있습니다.
이 필터는 내장된 대시보드의 뷰어가 자신의 데이터만 볼 수 있도록 하므로, 잠재적으로 민감한 정보가 포함된 대시보드를 포함할 때 유용합니다.
각 사용자에게 특정한 필터를 삽입하려면 Embed 대화 상자의 Authenticated 탭에서 Injected function`setting to :guilabel:`On 를 설정합니다. 함수를 지정하고 Save 을 클릭합니다.
예시
다음 필터 함수는 문서의 ownerId
필드가 임베딩 인증 제공자의 토큰의 sub
필드 값과 일치하는 데이터만 렌더링합니다.
function getFilter(context) { return { ownerId: context.token.sub }; }