martes, 21 de octubre de 2008

GROUPING

Indica si una expresión de columna especificada en una lista GROUP BY es agregada o no. GROUPING devuelve 1 para agregado y 0 para no agregado, en el conjunto de resultados. GROUPING sólo se puede usar en la lista de SELECT , cláusulas HAVING y ORDER BY cuando se especifica GROUP BY.

Sintaxis

GROUPING ( column_expression )

Argumentos

Es una columna o una expresión que contiene una columna en una cláusula GROUP BY.

Notas

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

SELECT  TipoTransaccion,
         Divisa, 'Todas las Divisas'=GROUPING(Divisa), 
         SUM(Cantidad) Cantidad
         FROM Movimientos GROUP BY TipoTransaccion, Divisa 
         WITH CUBE
 
TipoTransaccion         Divisa         Todas las Divisas    Cantidad    
----------------------- -------------- -------------------- ----------- 
Entrada                 NULL           0                    2000
Entrada                 Dolar          0                    6200
Entrada                 Euro           0                    10600
Entrada                 Libra          0                    4500
Entrada                 Yen            0                    45000
Entrada                 NULL           1                    68300
Salida                  Dolar          0                    7000
Salida                  Libra          0                    1700
Salida                  Yen            0                    30000
Salida                  NULL           1                    38700
NULL                    NULL           1                    107000
NULL                    NULL           0                    2000
NULL                    Dolar          0                    13200
NULL                    Euro           0                    10600
NULL                    Libra          0                    6200
NULL                    Yen            0                    75000
(16 filas afectadas)
                 

Como se ve hay dos tipos de NULL en la columna de divisas. Las que corresponden al último registro que insertamos que tiene un NULL en divisa, y al que la función GROUPING le asocia un 0, y el NULL que podemos traducir por "Todas las divisas" al que la función GROUPING le asocia un 1.

Clover.ETL

clover.ETL es un Open Source, basado en Java marco de integración de datos que pueden ser utilizados para transformar los datos.

Si bien la utilización de la tecnología Java que permite independencia de la plataforma. Se puede utilizar independiente - como una aplicación de servidor o puede ser empotrado en otras aplicaciones como una biblioteca de la transformación. 

Clover.ETL es liberado bajo doble licencia:

  • ·         comercial
  • ·         Licencia LGPL.

Características destacadas

·         internamente representa a todos los datos de caracteres Unicode como - cualquier carácter de cualquier códigos pueden ser representados - ASCII, LATINA, ASIA, etc

·         convierte a partir de los datos comunes y conjuntos de caracteres (ASCII, UTF-8, ISO-8859-1, ISO-8859-2, etc)

·         contiene la paleta de más de 40 componentes especializados de transformación

·         nativelly soporta todos los principales estándares de la industria de bases de datos (Oracle, MS SQL, DB2, Infromix, Sybase) y varias variantes de código abierto (MySQL, PostgreSQL). Otras bases de datos cuentan con el apoyo a través de la capa JDBC

·         lee y escribe datos XML / Excel (XLS) de datos y datos de longitud variable (CSV) / fix-datos de longitud y varios otros no tan comunes formatos (dBase / FoxPro / FlashFiler)

·         apoya distancia de lectura / escritura de datos a través de FTP / SFTP / HTTP / HTTPS protocolos, también trabaja con ZIPed y GZIPed datos

·         se ejecuta en 32 bits y 64 bits plataformas - Windows, Linux, AIX, Solaris, HP-UX, AS/400 y muchos otros

Más novedades

  • ·         registros de datos se manejan internamente como una variable de longitud estructuras de datos - puede manejar archivos muy grandes
  • ·         campos pueden tener valores por defecto, formatos de texto, el valor NULL checkers
  • ·         contiene los conectores a otros sistemas a través de protocolos estándar: middleware - JMS, LDAP, SOAP
  • ·         transformación de los datos se realiza por componentes independientes, cada uno de ellos ejecuta como un hilo independiente - puede utilizar más de una CPU (es muy escalable)
  • ·         marco implementa llamado gasoducto-paralelismo - al registro de datos es procesado por componente, que son inmediatamente enviados a la siguiente componente de procesamiento adicional.
  • ·         contiene especializados intérprete de lengua de transformación - CTL
  • ·         transformaciones (asignaciones) de los datos también pueden ser codificados directamente en Java o cualquier otro lenguaje de scripting
  • ·         metadatos que describen las estructuras de datos (registros) y las transformaciones puede ser leído / escrito del / a XML
  • ·         trabaja con el código fuente común de Sistemas de Gestión - CVS, SVN, SourceSafe
  • ·         puede ser ampliado fácilmente por componentes personalizados