Cambiado en la versión 2.6.
El modelo de esquema flexible de MongoDB permite que un campo determinado contenga datos de múltiples tipos, mientras que las bases de datos relacionales restringen las columnas a un solo tipo de dato. El Conector de BI muestrea datos de MongoDB para generar un modelo de esquema relacional, pero Pueden ocurrir conflictos deconversión de tipos cuando el Conector de BI muestrea diferentes tipos de datos de un campo en documentos MongoDB.
Hay dos categorías principales de conflictos de conversión de tipos que pueden ocurrir en presencia de múltiples tipos de datos: conflictos entre tipos escalares y conflictos que involucran tipos compuestos, como documentos y matrices.
Nota
El Conector de BI solo utiliza el subconjunto muestreado de sus datos para detectar conflictos de tipos durante la generación del esquema. Si su conjunto de datos contiene conflictos de tipos en un campo y los tipos conflictivos no estaban presentes en la muestra, el esquema generado no estará preparado para resolverlos y podría aumentar la latencia de las consultas.
Para obtener más información sobre la configuración del muestreo, como la configuración de la --samplesizey,--schemaRefreshIntervalSecs consulte Opciones de esquema.
Conflictos escalar-escalar
Cuando se produce un conflicto escalar-escalar, BI Connector utiliza la siguiente estructura en retícula para determinar el mayor límite superior de los dos tipos de datos diferentes:

Ejemplo
Si un campo determinado contiene los tipos int, double y string, el límite superior mínimo es string.
Cuando ocurre un conflicto escalar-escalar, el Conector de BI inserta una fila en la tabla information_schema.COLUMNS y enumera los diferentes tipos muestreados en la columna COLUMN_COMMENT.
Conflictos compuestos
Los conflictos compuestos son conflictos de conversión de tipos que afectan a un documento o a una matriz. Las siguientes secciones describen cómo el Conector de BI resuelve ambos tipos de conflictos compuestos.
Conflictos de documentos
Cuando se produce un conflicto con un documento, el Conector de BI muestra los campos del tipo de documento como columnas separadas mediante notación de puntos. Por ejemplo, la colección conflict contiene los siguientes documentos:
{ _id: 0, a: "foo" } // "a" is scalar (string) { _id: 1, a: { a: "bar", b: "baz" } } // "a" is composite (document)
El BI Connector detecta un conflicto entre escalar y compuesto y genera el siguiente esquema relacional:
Tabla: conflict
_id | un(a) | a.a | a.b |
|---|---|---|---|
0 | "foo" |
|
|
1 |
| "bar" | "baz" |
Cuando ocurre un conflicto que involucra un documento, el Conector de BI inserta una fila en la tabla information_schema.COLUMNS y enumera los diferentes tipos muestreados en la columna COLUMN_COMMENT.
Conflictos de matriz
Cuando se produce un conflicto con una matriz, el Conector de BI crea una nueva tabla para el campo en conflicto con una columna para la clave externa, el índice de la matriz y el valor. El Conector de BI descompone la matriz en varias filas en la nueva tabla y completa las columnas según corresponda. Por ejemplo, la colección conflict contiene los siguientes documentos:
{ _id: 0, a: "foo" } // "a" is scalar (string) { _id: 1, a: ["bar", "baz"] } // "a" is composite (array)
El conector de BI convierte lo anterior en las dos tablas siguientes:
Tabla: conflict
_id |
|---|
0 |
1 |
Tabla: conflict_a
_id | a_idx | un(a) |
|---|---|---|
0 |
| "foo" |
1 | 0 | "bar" |
1 | 1 | "baz" |
Cuando ocurre un conflicto que involucra una matriz, el Conector de BI:
Inserta una fila en la tabla
information_schema.COLUMNSy enumera todos los tipos diferentes muestreados en la columnaCOLUMN_COMMENTInserta una fila en la tabla
information_schema.TABLESque contiene información sobre cómo la matriz se asigna a la fila en la tablainformation_schema.COLUMNS