La función NATURALINNERJOIN realiza una combinación interna natural de dos tablas.
NATURALINNERJOIN(
leftJoinTable,
rightJoinTable
)
- leftJoinTable: Tabla existente o expresión que devuelve una tabla para el lado izquierdo de la combinación.
- rightJoinTable: Tabla existente o expresión que devuelve una tabla para el lado derecho de la combinación.
La función NATURALINNERJOIN devuelve una tabla con filas formadas por las filas de las dos tablas implicadas para las que los valores en las columnas comunes existen en ambas tablas.
Las tablas son combinadas según los nombres de los campos comunes. Si las dos tablas no tienen campos comunes, la función devuelve un error.
La tabla devuelta como resultado tendrá las columnas comunes de la tabla izquierda y el resto de columnas de las dos tablas.
No se garantiza el orden de las filas en la tabla resultado.
Las columnas con los mismos nombres deberán tener también el mismo tipo de datos.
Solo se combinan columnas con la misma ascendencia (procedentes de la misma fuente).
Supongamos que partimos de las siguientes dos tablas, "Population":
y "Extension":
...conteniendo respectivamente la población y extensión de cierto número de países.
Podemos intentar realizar un inner join entre estas dos tablas con la siguiente expresión:
naturalinnerjoin = NATURALINNERJOIN(Population, Extension)
...pero vemos cómo devuelve un mensaje de error debido a un bug de DAX al trabajar con este tipo de combinaciones. Hay dos soluciones a esto:
La primera consiste en, asegurándose de que hay una relación establecida entre los dos campos Country, cambiar el nombre de uno de ellos:
naturalinnerjoin = NATURALINNERJOIN(Population, Extension)
...aunque, en este caso, la función devuelve los dos campos que forman el enlace.
La segunda consisten en leer las tablas usando la función SELECTCOLUMNS añadiendo a los campos comunes una cadena de texto vacía:
naturalinnerjoin =
VAR
LeftTable =
SELECTCOLUMNS(
Population,
"Country", Population[Country] & "",
"Population", Population[Population]
)
VAR
RightTable =
SELECTCOLUMNS(
Extension,
"Country", Extension[Country] & "",
"Extension", Extension[Extension]
)
RETURN
NATURALINNERJOIN(LeftTable, RightTable)