¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Trampas de SQL [Chasm / Fan Trap]: Ejemplos simples y soluciones claras

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 21 Vistas
0
Cargando...

Hola a todos,

Ya he buscado en SDN sobre este tema pero pronto me confundí.

¿Alguien puede explicar con un ejemplo muy simple sobre las trampas de SQL [chasm / fan trap] y la solución para lo mismo?

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

También me gustaría recomendar la lectura de "Creación de Universos con SAP BusinessObjects": capítulo 7 - Capa de Fundación de Datos - Temas Avanzados, ya que contiene una muy buena explicación sobre las trampas de diseño SQL (trampa de ventilador, trampa de abismo y bucle).

Creación de Universos con SAP BusinessObjects: Taha M. Mahmoud: 9781782170907: Amazon.com: Libros

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

¿Tienes algún ejemplo en moda electrónica o club?

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Gracias por la respuesta.

Aquellos interesados en saber más, por favor consulten los documentos de Dave sobre los temas.

Muy buena explicación con ejemplos.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Swetha,

Trampa de abismo


La trampa de abismo ocurre cuando dos uniones "muchos a uno" convergen en una sola tabla. Por ejemplo, un cliente puede realizar muchos pedidos y/o muchos préstamos.

Trampa de abanico

La trampa de abanico ocurre cuando una unión "uno a muchos" enlaza una tabla que a su vez está enlazada por otra unión "uno a muchos".

Por ejemplo, al ejecutar una consulta que solicita el total de pedidos por cada línea de pedido, para un cliente en particular, se devuelve un resultado incorrecto, ya que se está realizando una función de agregación en la tabla en el extremo "uno" de la unión, mientras aún se está uniendo al extremo "muchos".

Ejemplo de trampa de abismo :

Por ejemplo:

A >- B -< C

( Empleados >-- Sala de exhibición --< Salario)

- Cada sala de exhibición tiene muchos empleados

- Cada sala de exhibición tiene muchas cifras de salario anual

El número de registros de empleados no debería afectar el salario total en el informe.

Si se escribe una consulta que abarque las tres tablas, los datos de la tabla A y C se duplicarían y los valores de medida se verían exagerados. Por ejemplo,

- X filas a la izquierda

- Y filas a la derecha

- X * Y filas en el conjunto combinado

Solución 1:


Define un contexto para cada tabla en el extremo "muchos" de las uniones.

Contexto = Significado

- Un contexto es un subconjunto de uniones en un universo

- Ese subconjunto de uniones tiene un significado particular

En nuestro ejemplo, podrías definir un contexto desde A hasta B y desde A hasta C. Un contexto contiene cada unión en el camino. Esto crea dos declaraciones SQL y dos tablas separadas en Business Objects, evitando la creación de un producto cartesiano. Utilizar contextos es la forma más efectiva de resolver trampas de abismo.

Solución 2:

Selecciona la opción 'Múltiples declaraciones SQL para cada medida' en el cuadro de diálogo de Parámetros del Universo en la herramienta. Solo se aplica a medidas. Obligas al motor de generación de SQL en Reporter a generar consultas SQL para cada medida que aparezca en el panel de consulta.

Ejemplo de trampa de abanico :

Por ejemplo:

A -< B -< C  (Ej: Cliente --< Pedidos --< Líneas de pedido)

Una trampa de abanico no es tan grave como una trampa de abismo. De hecho, hay muchas trampas de abanico que pueden ocurrir en un diseño de universo y pueden ignorarse siempre y cuando controles qué tipos de objetos utilizas.

Hay dos formas de resolver un problema de trampa de abanico.

• Usando un alias y la función de conciencia de agregación. Esta es la forma más efectiva de resolver el problema de la trampa de abanico.

• Alterando los parámetros de SQL para el universo. Esto solo funciona para objetos de medida.

Ambos métodos se describen a continuación.

Solución 1:

Los alias pueden resolver trampas de abismo

- Conocidos como alias de tabla al escribir declaraciones SQL

- Utilizados por BusinessObjects para separar lógicamente la trampa en piezas.

Creas una tabla alias y utilizas la función de conciencia de agregación. No puedes usar esta opción si tienes objetos incompatibles. Puedes hacerlo de la siguiente manera:

1. Crea un alias para la tabla que está produciendo la agregación multiplicada.

2. Crea una unión de uno a uno entre la tabla original y la tabla alias.

3. Modifica la declaración select para las columnas que se suman de modo que las columnas en la tabla alias se sumen y no la tabla original.

4. Aplica la función @AggregateAware a la declaración select. por ejemplo:

@AggregateAware(SUM(ORDERS.TOTAL_VALUE) , SUM(ORDERS_

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?