埋め込みダッシュボードのフィルタリング
項目一覧
埋め込みダッシュボードは、以下を追加してカスタマイズできます。
事前フィルター。 Charts 埋め込み SDK で
preFilter
オプションを使用するか、さまざまなクエリ パラメータを iFrame URL に追加します。フィルター。 Charts 埋め込み SDK で
filter
オプションを使用するか、さまざまなクエリ パラメータを iFrame URL に追加します。
使用は任意ですが、同じグラフで事前フィルターと フィルターの両方を使用できます。 事前フィルターは指定されている場合、ビューの後、ダッシュボードのクエリとフィルターの前に常に実行されます。 パイプライン セグメントの順序の詳細については、 集計パイプラインを参照してください。
フィルタ可能なフィールドの指定
ダッシュボード作成者は、埋め込みアプリケーション コードによって設定される、またはダッシュボード ビューアによって追加される事前フィルターとフィルターに含めることができるフィールドを指定します。 ダッシュボード作成者は、特定のフィールドのみをフィルタリングできるようにすることで、データへのアクセスを制限できます。 デフォルトでは、フィールドは許可されていません。つまり、少なくとも 1 つのフィールドを明示的に許可するまで、ダッシュボードをフィルタリングできません。
フィルタ可能なフィールドを定義するには、次の手順に従います。
目的のダッシュボードで、次をクリックします: [] ボタンをクリックし、ドロップダウンから [ 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
を指定することで、1 つ以上のサブフィールドを個別にリストに追加できます。
iFrame に埋め込まれたダッシュボードのデータを事前フィルタリング
多数のコレクションを持つ埋め込みチャートとダッシュボードには事前フィルターを使用します。 事前フィルターは埋め込みチャートのパイプラインの早い段階で実行され、次の結果を得ることができます。
データを早期にフィルタリングしてクエリの実行時間を短縮
ビューの後にクエリを実行する前にフィルターを適用し、集計を含むクエリにはフィルターを適用します
プレフィルターは フィルターと完全に一致し、同じ構文を使用します。 唯一の違いは、ビューの後に実行され、クエリとフィルターが開始される前に実行されることです。 パイプライン セグメントの順序の詳細については、「集計パイプライン 」を参照してください。
iFrame に埋め込まれたダッシュボードのデータをフィルタリング
filter
クエリ パラメータを使用して、指定された MQLフィルターに一致するデータのみを iFrame に埋め込まれたダッシュボードに表示します。
filter
クエリ パラメータはUnauthenticatedダッシュボードでのみ使用できます。 認証されていないダッシュボードでは、ダッシュボード作成者は、埋め込みアプリケーション コードによって設定されるフィルター、またはダッシュボード ビューアによって追加されるフィルターに含めることができるフィールドを指定します。 フィルタ可能なフィールドを指定する方法については、「 フィルタ可能なフィールドの指定 」を参照してください。
フィルター構文
フィルタで使用されるフィールドが許可されているフィルタ可能なフィールドのリストに含まれている場合は、 filter
クエリ パラメータとして MQL ドキュメントを指定できます。
フィルターは$matchクエリで使用される形式と一致し、次のいずれかである必要があります。
トップ レベル クエリ
例
{ "quantity": { $gte: 20 } } 例
{ $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
オプションを使用して埋め込みダッシュボードに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
経由で埋め込み認証プロバイダのトークンにアクセスし、トークンに基づいてダッシュボード データをフィルタリングできます。
このフィルターにより、埋め込みダッシュボードのユーザーは自分のデータのみが表示されるようになります。これは、機密情報を含むダッシュボードを埋め込む場合に便利です。
注意
Atlas App Services 認証プロバイダを使用する場合、 context.token
にはフィルタリングする App Servicesユーザー オブジェクトが含まれます。 たとえば、App Services ユーザーにカスタム ユーザー データを有効にすると、ユーザー オブジェクトはcontext.token.custom_data
で利用できるようになります。
各ユーザーに固有のフィルターを適用するには、 EmbedダイアログのAuthenticatedタブで、 Injected function`setting to :guilabel:`Onを設定します。 関数を指定し、[ Save ] をクリックします。
例
次のフィルター関数は、ドキュメントのownerId
フィールドが埋め込み認証プロバイダのトークンのsub
フィールドの値と一致するデータのみをレンダリングします。
function getFilter(context) { return { ownerId: context.token.sub }; }