¿Hay alguna forma equivalente de conectar datos como lo que hacemos en el software de BI (es decir, Power Bi o Tableau) y luego consultarlos?
Para aclarar:
Usamos uniones explícitas en lenguajes de programación, por ejemplo new_table = inner_join(a,b, by = c) para que la nueva tabla se calcule y sea definitiva, pero en las herramientas de BI introducimos un modelo de datos, puede ver un modelo en la imagen, es no calculado ahora, entonces realizamos una consulta de tablas múltiples sin ninguna combinación explícita. El propio software decide cómo recuperar los datos del modelo de datos justo a tiempo.
HR_tables %>% group_by(DEPARTMENTS$department_name) %>% (sum(EMPLOYEES$salary))La idea de un optimizador de consultas que se usa con vistas no materializadas en un sistema relacional como un almacén de datos generalmente no tiene un corolario directo en ninguno de estos lenguajes. Este tipo de optimizador se ve en acción en sistemas como Mahout Samsara o Tensorflow.
Otro análogo a un optimizador de consultas relacional tradicional se puede encontrar en Julia en la forma en que el optimizador puede transformar expresiones de transmisión. En muchos casos, la asignación de datos innecesarios en dicha expresión se puede reducir a cero transformando lo que parece ser una canalización en una mutación progresiva in situ.
También ve una evaluación perezosa análoga en el sistema LazyArrays en Julia pero, nuevamente, esto no está orientado hacia la optimización de combinación relacional que describió anteriormente.
Parte de la falta de estos sistemas en Julia y en Spark es la diferencia de enfoque. Las vistas no materializadas y la optimización de combinaciones complejas aparecen en sistemas donde prevalecen las formas normalizadas (también conocidos como sistemas relacionales). Los formularios normalizados son muy buenos cuando desea ver siempre las últimas actualizaciones, por ejemplo, la dirección de una persona. En menor medida, las uniones también se vuelven importantes cuando tiene una tabla de hechos central que hace referencia a las dimensiones como en una arquitectura de copo de nieve (nuevamente, la referencia a información actualizada como direcciones y números de teléfono se considera un beneficio).
En muchos sistemas más modernos, sin embargo, hay un enfoque mucho mayor en los diseños de flujo de datos y en la preservación de los datos como se presentaron originalmente. La mayoría de las uniones consisten en conjuntos de datos muy grandes o incluso flujos de datos en tiempo real contra tablas de dimensiones relativamente pequeñas, o son conjuntos de datos muy grandes contra conjuntos de datos muy grandes. Las uniones generalmente se minimizan en estos sistemas debido al énfasis en los datos desnormalizados como consecuencia parcial de los sistemas distribuidos geográficamente y, en parte, como consecuencia de un enfoque en la preservación de los datos como aparecían originalmente en lugar de mantenerlos completamente actualizados. La optimización de las uniones triviales que aparecen en estos sistemas es bastante simple y normalmente no necesita un optimizador basado en costos para hacer esto.
En este tipo de contexto, las suposiciones detrás de su pregunta realmente no se aplican.