.drdlファイルを使用せずにBI Connector に表示されるデータを制御する別の方法は、 ビューから読み取る です。ビューを使用すると、ソースコレクションを取得して、表示するフィールドを選択したり、フィールド名を変更したり、データをソートしたり、集計パイプラインで実行できるあらゆる種類の変換を実行したりできます。
例
ビューを使用して、コレクションからの機密情報をリダクションし、ソース コレクションではなくビューから読み取るように BI Connector に指示できます。
mongo shell メソッドcreateViewを使用してコレクションのビューを定義し、 mongosqldの起動時にそのビューを指定された名前空間として使用します。
例
employeesデータベース内のsalariesという名前のコレクションを考えてみましょう。 個人を特定できる情報をすべて除外するビューをsalariesコレクションに作成することで、BI Connector はソース コレクション内のプライベート データを破損することなく、ビューで安全にデータ分析を容易にできます。
次のコマンドは、 employeesデータベース内のsalaries_redactedという名前のビューのデータを使用してmongosqldを起動します。
mongosqld --sampleNamespaces "employees.salaries_redacted"
MongoDB ビューでスキーマを管理する別のユースケースは、作業データセットに、BI Connector のサンプリング プロセスで除外される可能性のある、データが少ないが重要なフィールドが含まれている場合です。
すべてのドキュメントに発生する 1 つのフィールドと、時々のみ発生するフィールドを含むsparseCollectionという名前のコレクションを考えてみましょう。 コレクションの一部は次のようになります。
{ "_id" : 0, "mainField": 247 } { "_id" : 1, "mainField": 71 } { "_id" : 2, "mainField": 981 } { "_id" : 3, "mainField": 712 } { "_id" : 4, "mainField": 781, "sparseField": 1000 } { "_id" : 5, "mainField": 256 } { "_id" : 6, "mainField": 910 }
BI Connector がスキーマを作成するときにsparseFieldが含まれるようにするには、 sparseFieldが発生しないすべてのドキュメントでゼロが入力されるビューを作成します。
db.runCommand ( { create: "denseCollection", viewOn: "sparseCollection", pipeline: [ { $addFields: { sparseField: { $ifNull: [ "$sparseField", 0 ] } } } ] } )
mongosqldの起動時にビューをデータソースとして使用するには、 --sampleNamespacesオプションでビューを指定します。
mongosqld --sampleNamespaces "myDatabase.denseCollection"