martes, 21 de octubre de 2008

SQL

OPERADOR UNION

El operador UNION combina el resultado de dos sentencias SELECT en un único resultado. Este resultado se compone de todos los registros devueltos en ambas sentencias. Por defecto, los registros repetidos se omiten. Para no quitarlos se empleará la palabra ALL. Tiene la forma:

SELECT sentencia UNION [ALL] SELECT sentencia

Cuando se utilice el operador UNION, la lista de selección para cada sentencia SELECT debe tener el mismo número de expresiones de columnas con el mismo tipo de datos y en el mismo orden. Por ejemplo:

1)      SELECT apellidos, nombre FROM alumnos  UNION SELECT apellidos, nombre FROM profesor UNION SELECT apellidos, nombre FROM personal

 

2)      SELECT título FROM película WHERE ActorNombre='Anthony Hopkins' UNION SELECT título FROM película WHERE ActrizNombre='Emma Thompson'

 

Estos ejemplos tienen el mismo nº de columnas y cada columna en orden con el mismo tipo de datos. En el primero nos devolverá una lista única  de alumnos, profesores y personal no docente, y en el otro de las películas que han hecho Emma Thompson y todas las que ha hecho Anthony Hopkins.

 

GROUPING (Transact-SQL)

Es una función de agregado que genera como salida una columna adicional con el valor 1 si la fila se agrega mediante el operador CUBE o ROLLUP, o el valor 0 cuando la fila no es el resultado de CUBE o ROLLUP.

La agrupación sólo se permite en la lista de selección asociada a una cláusula GROUP BY que contenga el operador CUBE o ROLLUP.

Sintaxis

GROUPING ( column_name

 

column_name: Es una columna de una cláusula GROUP BY en la que se comprueban los valores NULL de CUBE o ROLLUP.

El agrupamiento se utiliza para distinguir entre los valores NULL devueltos por CUBE o ROLLUP y los valores NULL normales. El valor NULL devuelto como resultado de una operación CUBE o ROLLUP es un uso especial de NULL. Actúa como marcador de posición de columna en el conjunto de resultados y significa "todos". Ejemplos

En el ejemplo siguiente se agrupa SalesQuota y se agregan las cantidades de SaleYTD. La función GROUPING se aplica a la columna SalesQuota.

USE AdventureWorks;

GO

SELECT SalesQuota, SUM(SalesYTD) 'TotalSalesYTD', GROUPING(SalesQuota) AS 'Grouping'

FROM Sales.SalesPerson

GROUP BY SalesQuota WITH ROLLUP;

GO

El conjunto de resultados muestra dos valores NULL bajo SalesQuota. El primer valor NULL representa el grupo de valores NULL de esta columna en la tabla. El segundo valor NULL se encuentra en la fila de resumen que agrega la operación ROLLUP. La fila de resumen indica las cantidades de TotalSalesYTD para todos los grupos SalesQuota, como señala el valor 1 en la columna Grouping.

Éste es el conjunto de resultados.

SalesQuota     TotalSalesYTD        Grouping 
---------      -------------         --------
NULL                1533087.5999          0
250000.00        33461260.59           0
300000.00      9299677.9445          0
NULL              44294026.1344         1
 
(4 row(s) affected)

 

ROLLUP

El operador ROLLUP resulta útil para generar informes que contienen subtotales y totales. El operador ROLLUP genera un conjunto de resultados similar a los generados por el operador CUBE. 

 

 

Existen algunas diferencias entre CUBE y ROLLUP, son las siguientes:

  • CUBE genera un conjunto de resultados que muestra agregados para todas las combinaciones de valores de las columnas seleccionadas.
  • ROLLUP genera un conjunto de resultados que muestra agregados para una jerarquía de valores de las columnas seleccionadas.

Por ejemplo, una tabla simple Inventory contiene lo siguiente:

Item                 Color                Quantity                   
-------------------- -------------------- -------------------------- 
Table                Blue                 124                        
Table                Red                  223                        
Chair                Blue                 101                        
Chair                Red                  210                        

Esta consulta genera un informe de subtotales:

SELECT CASE WHEN (GROUPING(Item) = 1) THEN 'ALL'
            ELSE ISNULL(Item, 'UNKNOWN')
       END AS Item,
       CASE WHEN (GROUPING(Color) = 1) THEN 'ALL'
            ELSE ISNULL(Color, 'UNKNOWN')
       END AS Color,
       SUM(Quantity) AS QtySum
FROM Inventory
GROUP BY Item, Color WITH ROLLUP
 
Item                 Color                QtySum                     
-------------------- -------------------- -------------------------- 
Chair                Blue                 101.00                     
Chair                Red                  210.00                     
Chair                ALL                  311.00                     
Table                Blue                 124.00                     
Table                Red                  223.00                     
Table                ALL                  347.00                     
ALL                  ALL                  658.00                     
 
(7 row(s) affected)

Si la palabra clave ROLLUP de la consulta se cambia por CUBE, el conjunto de resultados de CUBE es el mismo, excepto que al final se devuelven estas dos filas adicionales:

ALL                  Blue                 225.00                     
ALL                  Red                  433.00                     

La operación CUBE generó filas para las posibles combinaciones de valores de Item y Color. Por ejemplo, CUBE no sólo informa de todas las posibles combinaciones de valores Color con el valor de Item Chair (Red, Blue y Red + Blue), sino que también informa de todas las posibles combinaciones de los valores de Item con el valor Color Red (Chair, Table y Chair + Table).

Para cada valor de las columnas situadas a la derecha de la cláusula GROUP BY, la operación ROLLUP no informa de todas las posibles combinaciones de valores de las columnas situadas a la izquierda. Por ejemplo, ROLLUP no informa de todas las posibles combinaciones de valores de Item para cada valor de Color.

El conjunto de resultados de una operación ROLLUP tiene una funcionalidad parecida a la que devuelve COMPUTE BY. Sin embargo, ROLLUP tiene estas ventajas:

  • ROLLUP devuelve un único conjunto de resultados, mientras que COMPUTE BY devuelve múltiples conjuntos de resultados que aumentan la complejidad del código de la aplicación.
  • A diferencia de COMPUTE BY, ROLLUP se puede utilizar en un cursor de servidor.
  • En ocasiones, el optimizador de consultas puede generar planes de ejecución más eficaces para ROLLUP que para COMPUTE BY.

 

 

 

 

METADATA

Otro aspecto de la arquitectura de data warehouse es crear soporte a la metadata. Metadata es la información sobre los datos que se alimenta, se transforma y existe en el data warehouse. Metadata es un concepto genérico, pero cada implementación de la metadata usa técnicas y métodos específicos.

Estos métodos y técnicas son dependientes de los requerimientos de cada organización, de las capacidades existentes y de los requerimientos de interfase de usuario. Hasta ahora, no hay normas para la metadata, por lo que la metadata debe definirse desde el punto de vista del software data warehousing, seleccionado para una implementación específica.

Típicamente, la metadata incluye los siguientes ítems:

    • Las estructuras de datos que dan una visión de los datos al administrador de datos.
    • Las definiciones del sistema de registro desde el cual se construye el data warehouse.
    • Las especificaciones de transformaciones de datos que ocurren tal como la fuente de datos se replica al data warehouse.
    • El modelo de datos del data warehouse (es decir, los elementos de datos y sus relaciones).
    • Un registro de cuando los nuevos elementos de datos se agregan al data warehouse y cuando los elementos de datos antiguos se eliminan o se resumen.
    • Los niveles de sumarización, el método de sumarización y las tablas de registros de su data warehouse.

Algunas implementaciones de la metadata también incluyen definiciones de la(s) vista(s) presentada(s) a los usuarios del data warehouse. Típicamente, se definen vistas múltiples para favorecer las preferencias variadas de diversos grupos de usuarios. En otras implementaciones, estas descripciones se almacenan en un Catálogo de Información.

Los esquemas y subesquemas para bases de datos operacionales, forman una fuente óptima de entrada cuando se crea la metadata. Hacer uso de la documentación existente, especialmente cuando está disponible en forma electrónica, puede acelerar el proceso de definición de la metadata del ambiente data warehousing.

http://www.ongei.gob.pe/publica/metodologias/Lib5084/162.HTM

La metadata sirve, en un sentido, como el corazón del ambiente data warehousing. Crear definiciones de metadata completa y efectiva puede ser un proceso que consuma tiempo, pero lo mejor de las definiciones y si usted usa herramientas de gestión de software integrado, son los esfuerzos que darán como resultado el mantenimiento del datawarehouse.

No hay comentarios: