Especialista en análisis de datos en lenguaje SQL. SQL para análisis de datos. Análisis de datos en lenguaje SQL.

Irina Nikiforova recibió su doctorado en sociología del Instituto de Tecnología de Georgia. Actualmente es investigadora en la Escuela Superior de Economía de la Universidad Nacional de Investigación. También es profesora asociada en el Departamento de Métodos y Tecnologías de Investigación Sociológica de la Facultad de Sociología del Campus HSE de San Petersburgo.

Anotación:

Programas con fuente abierta, como el sistema de gestión de bases de datos datos mysql y el lenguaje de programación R para computación estadística se han convertido en herramientas estándar para el análisis de datos en la investigación académica y aplicada. Estas herramientas se pueden utilizar en una variedad de sistemas operativos, incluidos Windows, Linux y Mac OS. Este curso está dirigido a investigadores que tengan habilidades para trabajar con R y se especialicen en el campo. análisis estadístico datos en diversas disciplinas que también quieran dominar las bases de datos MySQL, cómo integrarlas con R y cómo resolver los problemas técnicos que surjan.

El curso introducirá técnicas y herramientas básicas para la gestión de bases de datos relacionales, incluyendo lenguaje MySQL, reglas para la formación de consultas en SQL, así como minería de datos utilizando R. Además, se discutirán temas relacionados con la compatibilidad de Excel, SPSS y MySQL, y el uso de herramientas estadísticas en el lenguaje R.

Se supone que los participantes del curso están familiarizados con el lenguaje de programación R y tienen habilidades en análisis estadístico en R, así como experiencia trabajando con bases de datos. Para participar en el curso es necesario tener un portátil personal con R, Excel y SPSS instalados.

El curso incluye tareas para trabajo independiente.

Estructura del curso:

  • Seminario 1: Principios de trabajo con bases de datos y sistemas de gestión de bases de datos; instalación y conceptos básicos del uso de MySQL y SQLite
  • Seminario 2: Navegación en bases de datos: conceptos básicos de SQL y generación de consultas.
  • Taller 3: Consultas complejas en SQL
  • Taller 4: Gestión de Datos e Interoperabilidad
  • Taller 5: Minería de Datos en R.
  • Bessant, Conrad, Shadforth, Ian y Oakley, Darren. (2009). Construyendo Soluciones Bioinformáticas: con Perl, R y MySQL. Oxford, Reino Unido: Oxford University Press.
  • Spector, Phil. (2008). Manipulación de datos con R (¡Use R!). Nueva York: Springer.
  • Torgo, Luis. (2010). Minería de datos con R: aprender con estudios de casos. Chapman y Hall/CRC.
  • Welling, Luke y Thomson, Laura. (2003). Tutorial de MySQL. Indianápolis, Indiana, Estados Unidos: MySQL Press.

Análisis de datos en lenguaje SQL.

lenguaje SQL- mayoría poderosa herramienta para el procesamiento de datos, inventado por el hombre. Este lenguaje de consulta simple y expresivo es compatible con todas las bases de datos modernas (incluidas Microsoft, Oracle, IBM) y herramientas de análisis y programación (incluido Excel).

En este curso Se familiarizará con las bases de datos utilizando el lenguaje de consulta SQL. El objetivo del curso es aprender a utilizar bases de datos modernas con fluidez y confianza, incluido el análisis de datos y la creación de informes.

Audiencia del curso: analistas y desarrolladores de informes que trabajan con bases de datos.

Al finalizar el curso podrás:

  • Utilice bases de datos modernas
  • Escribir consultas de bases de datos en lenguaje SQL.
  • Utilice construcciones SQL complejas
  • Realizar análisis de datos simples
  • Crear informes

Actualmente hay una gran demanda de especialistas con estos conocimientos y habilidades. La mayoría de los graduados de nuestros cursos continúan carreras exitosas y son respetados por los empleadores.

Duración del curso - 24 ac. h.

programa del curso

Módulo 1: Bases de datos relacionales

  • SGBD de servidor SQL
  • Lenguaje de consulta SQL
  • Estudio de gestión
  • Bases de datos y tablas
  • Escribir y ejecutar consultas.
  • Acceder a datos desde Excel
  • Extraer datos de varias fuentes

Módulo 2. Operaciones simples con una tabla

  • SELECCIONAR declaración
  • Filtrar una tabla por columnas
  • Filtrar una tabla por filas
  • Usando funciones
  • Tipos de datos
  • Manejo de valores desconocidos
  • Clasificación
  • Operación ARRIBA
  • Eliminar duplicados
  • Orden de operaciones en una solicitud

Módulo 3: Transformación de tablas

  • Agregación
  • Agrupamiento
  • Filtrado de grupos

Módulo 4. Modificación de datos

  • Agregar filas
  • Modificación de cadena
  • Eliminando filas

Módulo 5: Operaciones de varias mesas

  • Usar varias tablas en una consulta
  • Unión, intersección y diferencia de conjuntos.
  • Subconsultas
  • Uso de subconsultas en una declaración SELECT
  • Unir mesas
  • Usando conexiones
  • Conexiones externas
  • Compuestos correlacionados
  • División relacional

Módulo 6. Informes de construcción

  • tablas dinámicas
  • Calcular subtotales
  • que van
  • Salida de página
  • Agregación con ventana corredera.
  • Funciones de compensación

Módulo 7. Trabajar con almacenes de datos y mercados de datos

  • Bases de datos operativas
  • Almacenes de datos y mercados de datos
  • Estructura de almacenamiento
  • Trabajar con almacenamiento
  • Procesamiento analítico de grandes volúmenes de datos.
  • Análisis de datos estadísticos.
  • Herramientas de análisis de datos

Al finalizar el curso se realiza una certificación final. La certificación se realiza en forma de prueba en la última lección o en base a calificaciones. trabajo practico realizados durante el curso.

Si quieres convertirte en un científico de datos, no puedes prescindir de SQL. Este lenguaje puede ser utilizado no sólo por analistas o científicos, sino también por cualquiera que pueda dedicar unos días a aprendiendo SQL solicitudes:

¿SQL para análisis de datos? ¿Qué es esto? ¿De qué sirve?

SQL significa Lenguaje de Consulta Estructurado, que se traduce como " lenguaje de consulta estructurado».

Pero me gusta otra descripción: es Excel con esteroides. Así es como se ve el mismo conjunto de datos en Excel y SQL:

Como podemos ver, SQL y Excel son bastante similares. Ambos presentan datos como una tabla bidimensional con columnas y filas. Ambos están extremadamente estructurados y fáciles de entender.

Pero hay una serie de diferencias entre ellos:

  1. El primero es actuación. Excel funciona muy bien con pequeños volúmenes datos, pero cuando tienes 100.000 filas, usar fórmulas se convierte en un ejercicio ineficiente y que requiere mucho tiempo.
  2. El segundo es forma de interactuar con la base de datos. Excel es principalmente una interfaz gráfica de usuario ( GUI). Le permite desplazarse por la tabla, ingresar fórmulas y usar el cursor para mover el área deseada. No en SQL GUI- Aquí se utilizan las llamadas consultas SQL.

cuando dominas Consultas SQL para principiantes, comprenderás que trabajar con él es más transparente y eficiente que con Excel. Además, en SQL es mucho más cómodo automatizar tu trabajo y utilizar desarrollos anteriores.

Al analizar datos, utilizará SQL durante bastante tiempo. tareas simples: suma, combinación de matrices de datos, estadística simple y métodos matemáticos. Pero con SQL, su trabajo será más eficiente y podrá utilizar conjuntos de datos más grandes que antes.

¿Qué pasa con Python, R o bash?

Cuando empieces a utilizar estos lenguajes para el análisis de datos, te darás cuenta de que Python y R sirven para una cosa, y SQL para otra. La principal diferencia entre estos lenguajes está en la sintaxis”, funciones"y productividad. ¡Pues ahora pasemos a la parte práctica!

Paso 0: instalar el sistema de gestión de bases de datos SQL

Usaré postgreSQL. Existen otros tipos de DBMS SQL. Pero todos son similares, por lo que si aprendes PostgreSQL, adaptarte a otro idioma sólo te llevará unas pocas horas (o incluso minutos).

En en este momento debes tener tres cosas:

  1. Servidor de datos con acceso vía terminal o iTerm;
  2. PostgreSQL instalado en su servidor;
  3. Pgadmin4 instalado en la computadora ( o Banco de trabajo SQL).

Nota: Usaré SQL Workbench como mi herramienta SQL.

Paso 1: inicie sesión en su base de datos SQL mediante el símbolo del sistema

Primero necesita acceder a la base de datos desde línea de comando. Te mostraré cómo hacer esto y en el futuro tendrás que hacer lo mismo:

  1. Terminal abierta ( o iTerm):
  2. Conéctese al servidor a través de SSH.

En mi caso ingreso:

ssh tomi@[mi_dirección_ip]

  1. Al iniciar sesión en el servidor tengo acceso a la base de datos postgreSQL. Como ya le he permitido el acceso a mi usuario, ingreso el siguiente comando:
psql -U tomi -d postgres

psql es el comando en sí, -U indica el nombre de usuario ( en mi caso es “tomi”), y -d especifica el nombre de la base de datos ( en mi caso postgres, como el tuyo). El símbolo del sistema debería cambiar a lo siguiente:

Postgres=>

¡Listo! ahora tienes acceso completo a la base datos SQL .

  1. Para consultar la consulta SQL puede ingresar:
dt


Aparecerá una lista de todas las tablas de datos en la pantalla. Hasta ahora solo hay uno. Pero eso cambiará pronto:

Nota: Las bases de datos SQL también se denominan " bases de datos relacionales ».

Paso 2: cargar datos

En esta sección, trabajaremos con un pequeño conjunto de datos llamado zoo(" zoo"). Puedes descargarlo desde aquí para formato de texto.tsv.

Pero sigamos con consulta SQL ejemplo:

1) Crear una tabla:

CREAR TABLA zoo(animal varchar(10), uniq_id entero CLAVE PRIMARIA, water_need entero);

2) Comprobar que la tabla fue creada definitivamente:

Tenemos una nueva tabla de datos: ¡zoológico!

3) Cargando datos!

Copia la solicitud:

INSERTAR EN zoológico (animal,uniq_id,water_need) VALORES ("elefante",1001,500), ("elefante",1002,600), ("elefante",1003,550), ("tigre",1004,300) , ("tigre",1005,320), ("tigre",1006,330), ("tigre",1007,290), ("tigre",1008,310), ("cebra",1009,200) , ("cebra",1010,220), ("cebra",1011,240), ("cebra",1012,230), ("cebra",1013,220), ("cebra",1014,100) , ("cebra",1015,80), ("león",1016,420), ("león",1017,600), ("león",1018,500), ("león",1019,390) , ("canguro",1020,410), ("canguro",1021,430), ("canguro",1022,410);

Si todo ha ido bien recibirás el siguiente mensaje:

INSERTAR 0 22

La declaración SQL más importante: SELECT

Es hora de explorar operador jefe lenguaje de consulta SQL. Aquí lo tienes:

SELECCIONAR * DESDE nombre_tabla;

Usaremos SELECT cada vez que necesitemos leer, filtrar, transformar y resumir datos. Para empezar, seleccionemos ( palabra inglesa seleccionar se traduce exactamente como "elegir") todo lo que hay en la mesa del zoológico.

SELECCIONAR * DEL zoológico;

El operador me devolvió la mesa entera.

SELECCIONAR * DEL zoológico;

SELECT es la declaración básica que le dice a SQL que queremos leer datos de una tabla.
* - indica que queremos seleccionar todas las columnas.
FROM le dice a SQL que vamos a especificar una tabla para leer datos.
zoo es el nombre de la mesa. Se puede sustituir por cualquier otro si tienes varias mesas.
;

esta es una sintaxis requerida por SQL. Cada consulta debe terminar con un punto y coma. Si lo omite accidentalmente, SQL esperará a que la consulta continúe y no mostrará nada. Usaremos regularmente la expresión discutida anteriormente cuando trabajemos con consultas complejas

SQL.

Seleccionar columnas

El signo * se puede reemplazar con nombres de columnas. Considere la siguiente consulta como ejemplo:

SELECCIONE animal, agua_necesidad DEL zoológico;

Obtenemos exactamente lo que esperábamos: hay columnas "animal" y "water_need" en la pantalla, pero ya no "uniq_id".

De la misma manera, puedes seleccionar cualquier columna; simplemente especifica sus nombres, separados por una coma. También puedes hacer algo como esto:

SELECCIONE animal, animal, animal DEL zoológico;

La misma columna se repetirá varias veces... Pero como esto no tiene mucho sentido, no vale la pena hacerlo.

Mostrando las primeras filas de datos: instrucción LIMIT Actualmente estamos trabajando con una tabla de datos que consta de 22 filas. Para limitar la selección a las primeras filas, usaremos la instrucción LIMIT: un pequeño " expansión

» a la consulta base:

SELECCIONAR * DEL zoológico LÍMITE 10;

Sólo las primeras 10 líneas se mostrarán en la pantalla.

Filtrado de filas: declaración WHERE Usando la cláusula WHERE, puede seleccionar líneas específicas

, en función de sus valores. Ejemplo de consulta SQL:

SELECCIONE * DEL zoológico DONDE animal = "elefante"; SELECCIONAR * DEL zoológico –" esto "»
petición básica
DONDE: le dice a SQL que desea filtrar algo. animal = "elefante" –» animal es el nombre de la columna en la que estamos buscando valor deseado
, y elefante es el significado mismo. En SQL siempre necesitamos agregar una columna en la que buscamos el valor deseado.

; – “¡No te olvides del punto y coma!

Autoprueba n.º 1

Este es un artículo introductorio, por lo que la primera tarea también será bastante sencilla: Seleccionar primeros tres cebras ( cebra

) del zoológico de mesa.

¿Estás listo?

Aquí está mi solución:

SELECCIONE * DEL zoológico DONDE animal = "cebra" LÍMITE 3;

De acuerdo, SQL es fácil .

Y una cosa más: sintaxis...

  1. Todas las consultas SQL deben terminar con un punto y coma (;). Si lo omite accidentalmente, SQL asumirá que la consulta no ha finalizado y no se mostrará nada en la pantalla. Por ejemplo:
postgres=> SELECCIONAR * DEL zoológico postgres->

De alguna manera no muy... Será mejor así:

Postgres=> SELECCIONAR * DEL zoológico;

  1. SQL no distingue entre mayúsculas y minúsculas cuando se trata de palabras clave ( SELECCIONAR, DONDE, LIMITAR, etc..). Por ejemplo:
SELECCIONAR * DEL zoológico;

funciona igual que

Seleccione * del zoológico;

La distinción entre mayúsculas y minúsculas de los nombres de tablas, nombres de columnas y sus valores depende de la configuración. En nuestra situación ( al usar postgreSQL) los nombres de tablas y columnas no distinguen entre mayúsculas y minúsculas, a diferencia de los valores de campo. Por ejemplo:

SELECCIONE * DEL zoológico DONDE animal = "elefante"; –" FUNCIONA SELECT * FROM ZOO WHERE ANIMAL = 'elefante'; –» FUNCIONA SELECT * FROM ZOO WHERE ANIMAL = "ELEFANTE"; -"NO FUNCIONA

Tenga en cuenta que la mayoría de las personas en el lenguaje de consulta SQL escriben palabras clave en mayúsculas (SELECCIONAR, DONDE, LIMITAR, etc... ), lo que aumenta la legibilidad del código.

Conclusión

Hemos dado el primer paso hacia usando SQL para el análisis de datos! ¡Felicidades! Ahora puedes escribir consultas básicas. ¡Pero esto es sólo el comienzo!

Traducción del artículo “ SQL para análisis de datos – Tutorial para principiantes – ep1” fue preparado por el amigable equipo del proyecto Creación de sitios web de la A a la Z.

Si quieres convertirte en un científico de datos, no puedes prescindir de SQL. Este lenguaje puede ser utilizado no sólo por analistas o científicos, sino también por cualquiera que pueda dedicar unos días a estudiar consultas SQL:

¿SQL para análisis de datos? ¿Qué es esto? ¿De qué sirve?

SQL significa Lenguaje de Consulta Estructurado, que se traduce como " lenguaje de consulta estructurado».

Pero me gusta otra descripción: es Excel con esteroides. Así es como se ve el mismo conjunto de datos en Excel y SQL:


Como podemos ver, SQL y Excel son bastante similares. Ambos presentan datos como una tabla bidimensional con columnas y filas. Ambos están extremadamente estructurados y fáciles de entender.

Pero hay una serie de diferencias entre ellos:

  1. El primero es actuación. Excel funciona muy bien con pequeñas cantidades de datos, pero cuando tienes 100.000 filas, usar fórmulas se convierte en un ejercicio ineficiente y que requiere mucho tiempo.
  2. El segundo es forma de interactuar con la base de datos. Excel es principalmente una interfaz gráfica de usuario ( GUI). Le permite desplazarse por la tabla, ingresar fórmulas y usar el cursor para mover las áreas requeridas. SQL no tiene una GUI: utiliza lo que se denominan consultas SQL.



cuando dominas Consultas SQL para principiantes, comprenderás que trabajar con él es más transparente y eficiente que con Excel. Además, en SQL es mucho más cómodo automatizar tu trabajo y utilizar desarrollos anteriores.

En el análisis de datos, utilizará SQL para tareas bastante simples: resumen, combinación de conjuntos de datos y métodos estadísticos y matemáticos simples. Pero con SQL, su trabajo será más eficiente y podrá utilizar conjuntos de datos más grandes que antes.

¿Qué pasa con Python, R o bash?

Cuando empieces a utilizar estos lenguajes para el análisis de datos, te darás cuenta de que Python y R sirven para una cosa, y SQL para otra. La principal diferencia entre estos lenguajes está en la sintaxis, las “funciones” y el rendimiento. ¡Pues ahora pasemos a la parte práctica!

Paso 0: instalar el sistema de gestión de bases de datos SQL

Usaré postgreSQL. Existen otros tipos de DBMS SQL. Pero todos son similares, por lo que si aprendes PostgreSQL, adaptarte a otro idioma sólo te llevará unas pocas horas (o incluso minutos).

En este punto deberías tener tres cosas:

  1. Servidor de datos con acceso vía terminal o iTerm;
  2. PostgreSQL instalado en su servidor;
  3. Pgadmin4 instalado en su computadora (o Banco de trabajo SQL).

Nota: Usaré SQL Workbench como mi herramienta SQL.

Paso 1: inicie sesión en su base de datos SQL mediante el símbolo del sistema

Primero necesitas acceder a la base de datos desde la línea de comando. Te mostraré cómo hacer esto y en el futuro tendrás que hacer lo mismo:

  1. Terminal abierta ( o iTerm):
  2. Conéctese al servidor a través de SSH.

En mi caso ingreso:

ssh tomi@[mi_dirección_ip]


  1. Al iniciar sesión en el servidor tengo acceso a la base de datos postgreSQL. Como ya le he permitido el acceso a mi usuario, ingreso el siguiente comando:

psql -U tomi -d postgres

psql es el comando en sí, -U indica el nombre de usuario ( en mi caso es “tomi”), y -d especifica el nombre de la base de datos ( en mi caso postgres, como el tuyo). El símbolo del sistema debería cambiar a lo siguiente:


¡Listo! Ahora tiene acceso completo a la base de datos SQL..

  1. Para consultar la consulta SQL puede ingresar:

Aparecerá una lista de todas las tablas de datos en la pantalla. Hasta ahora solo hay uno. Pero eso cambiará pronto:


Nota: Las bases de datos SQL también se denominan " bases de datos relacionales».

Paso 2: cargar datos

En esta sección, trabajaremos con un pequeño conjunto de datos llamado zoo. Puedes descargarlo desde aquí en formato de texto .tsv.

Pero sigamos con la consulta SQL de ejemplo.:

1) Crear una tabla:

CREAR TABLA zoo(animal varchar(10), uniq_id entero CLAVE PRIMARIA, water_need entero);


2) Comprobar que la tabla fue creada definitivamente:

Tenemos una nueva tabla de datos: ¡zoológico!


3) Cargando datos!

Copia la solicitud:

INSERTAR EN zoológico (animal,uniq_id,water_need) VALORES ("elefante",1001,500), ("elefante",1002,600), ("elefante",1003,550), ("tigre",1004,300) , ("tigre",1005,320), ("tigre",1006,330), ("tigre",1007,290), ("tigre",1008,310), ("cebra",1009,200) , ("cebra",1010,220), ("cebra",1011,240), ("cebra",1012,230), ("cebra",1013,220), ("cebra",1014,100) , ("cebra",1015,80), ("león",1016,420), ("león",1017,600), ("león",1018,500), ("león",1019,390) , ("canguro",1020,410), ("canguro",1021,430), ("canguro",1022,410);

Si todo ha ido bien recibirás el siguiente mensaje:


La declaración SQL más importante: SELECT

Es hora de estudiar el operador principal. lenguaje de consulta SQL. Aquí lo tienes:

SELECCIONAR * DESDE nombre_tabla;

Usaremos SELECT cada vez que necesitemos leer, filtrar, transformar y resumir datos. Para empezar, seleccionemos ( La palabra inglesa seleccionar se traduce exactamente como "elegir") todo lo que hay en la mesa del zoológico.

SELECCIONAR * DEL zoológico;


El operador me devolvió la mesa entera.

SELECCIONAR * DEL zoológico;

SELECT es la declaración básica que le dice a SQL que queremos leer datos de una tabla.
* - indica que queremos seleccionar todas las columnas.
FROM le dice a SQL que vamos a especificar una tabla para leer datos.
zoo es el nombre de la mesa. Se puede sustituir por cualquier otro si tienes varias mesas.
;

Usaremos la expresión analizada anteriormente con regularidad cuando trabajemos con consultas SQL complejas.

SQL.

Seleccionar columnas

SELECCIONE animal, agua_necesidad DEL zoológico;


SELECCIONE animal, agua_necesidad DEL zoológico;

Obtenemos exactamente lo que esperábamos: hay columnas "animal" y "water_need" en la pantalla, pero ya no "uniq_id".

SELECCIONE animal, animal, animal DEL zoológico;


SELECCIONE animal, animal, animal DEL zoológico;

La misma columna se repetirá varias veces... Pero como esto no tiene mucho sentido, no vale la pena hacerlo.

Actualmente estamos trabajando con una tabla de datos que consta de 22 filas. Para limitar la selección a las primeras filas, usaremos la instrucción LIMIT, una pequeña "extensión" de la consulta básica:

SELECCIONAR * DEL zoológico LÍMITE 10;

SELECCIONAR * DEL zoológico LÍMITE 10;


Sólo las primeras 10 líneas se mostrarán en la pantalla.

Usando la cláusula WHERE, puede seleccionar filas específicas según sus valores. Ejemplo de consulta SQL:

SELECCIONAR * DEL zoológico –" esta es la "consulta base"
petición básica
animal = ‘elefante’ –” animal es el nombre de la columna en la que buscamos el valor deseado, y elefante es el valor en sí. En SQL siempre necesitamos agregar una columna en la que buscamos el valor deseado.
, y elefante es el significado mismo. En SQL siempre necesitamos agregar una columna en la que buscamos el valor deseado.

; – “¡No te olvides del punto y coma!

Autoprueba n.º 1

Seleccione las primeras tres cebras ( cebras ( cebra

Combinación rápida: DB2 10.5 con BLU Acceleration y R

Grant Hutchison
Publicado el 11/06/2014

R es un lenguaje de programación de código abierto. código fuente, que es excelente para análisis de datos y gráficos. R fue desarrollado originalmente por Ross Ihaka y Robert Gentleman en la Universidad de Auckland. Aiheka y Gentleman querían crear un lenguaje que les ayudara a impartir cursos de introducción a la estadística a los estudiantes. El lenguaje R fue diseñado bajo la influencia del lenguaje S, creado por Bell Labs en la década de 1970. R se considera un lenguaje de dominio específico porque fue diseñado principalmente para el análisis de datos y realiza esta tarea muy bien. R se puede utilizar como entorno interactivo y como scripts y modelos integrados en paquetes e integrados con otros módulos de software.

El lenguaje R se puede utilizar para analizar datos de muchas fuentes de datos diferentes, incluidas archivos externos o bases de datos. Este artículo explica cómo conectarse a los datos, cómo consultar datos y cómo actualizar los datos que residen en servidores de bases de datos relacionales. También aprenderá por qué DB2 v10.5 con BLU Acceleration es una excelente opción para análisis. Finalmente, el artículo explica cómo BLU Acceleration for Cloud facilita la carga y el análisis de conjuntos de datos utilizando el lenguaje R.

Abreviaturas de uso común
  • CRAN: Red integral de archivos R
  • CSV: valores separados por comas
  • DSN: nombre de la fuente de datos
  • ODBC: conectividad de base de datos abierta
  • RODBC: Conectividad de base de datos abierta para R
  • SIMD: instrucción única, datos múltiples
  • SQL: lenguaje de consulta estructurado

Datos externos

En R, los objetos se crean y administran dentro de una única área de memoria. En la mayoría de los casos, las tareas de análisis de datos requieren que los datos estén disponibles en forma de marco de datos. Un marco de datos se puede considerar como matriz bidimensional datos heterogéneos o como una tabla en memoria. Si los datos ya existen como un archivo de texto delimitado, un usuario de R puede cargar los datos en la memoria para su análisis utilizando una de muchas funciones como read.xxx(), como la función read.csv() para archivos CSV. De manera similar, si un marco de datos R necesita ser "externalizado" como un archivo, se pueden usar muchas funciones como write.xxx().

El lenguaje R le permite guardar marcos de datos en el disco como objetos (es decir, fuera de su memoria) utilizando las funciones integradas saveRDS(), save() y save.image(). Estos objetos luego se pueden volver a leer en la memoria para su posterior análisis. Sin embargo, este mecanismo de persistencia tiene muchas desventajas, incluido el espacio limitado del marco de datos. Además, existen problemas asociados con el uso archivos de texto para análisis de datos; Requieren un esfuerzo significativo en la limpieza de datos y en la transferencia de conjuntos de datos a otros usuarios.

Surge la pregunta: si sus datos para análisis se generan utilizando sistemas operativos y bases de datos relacionales existentes, entonces ¿por qué no simplemente extraer los datos de Sistema operativo y no llenar una base de datos analítica con estos datos con el fin de analizarlos usando R?

¿Cuáles son los beneficios de utilizar una base de datos relacional con el lenguaje R?

R se puede utilizar para explorar datos y crear modelos predictivos. Los servidores de bases de datos relacionales están diseñados para procesar grandes volúmenes datos y ayudar a garantizar la coherencia de los datos para los usuarios simultáneos. Debido a que los datos en las bases de datos relacionales generalmente se almacenan en un formato normalizado, al realizar tareas de análisis de datos exploratorios (EDA), es probable que necesite utilizar algunas habilidades de SQL para combinar atributos relevantes en varias tablas. Si trabaja con un administrador de base de datos o un analista de datos experto en bases de datos relacionales, puede crear vistas auxiliares de solo lectura para acelerar el análisis de los datos de origen. Cuando trabaje con datos en un entorno DB2, puede utilizar la herramienta IBM Data Studio o la consola web del entorno IBM BLU Acceleration for Cloud para explorar el esquema de su base de datos o definir nuevas vistas para facilitar el acceso a los datos desde sus scripts R.

De forma predeterminada, antes de realizar cualquier análisis, el entorno R carga todos los datos en RAM. Cuando el procesamiento de consultas lo maneja un servidor de bases de datos relacionales como DB2, el sistema no simplemente cargará todos los datos del disco en la memoria. El servidor de la base de datos analizará la solicitud en su conjunto y determinará la forma más método efectivo obteniendo los resultados solicitados.

DB2 con aceleración BLU

DB2 10.5 con BLU Acceleration está optimizado para cargas de trabajo analíticas y, por lo tanto, es excelente elección para analizar datos utilizando R. Hay muchas razones para admitir DB2 con BLU Acceleration, incluidas las siguientes:

  • Sencillez
    • El análisis de datos se puede realizar inmediatamente después de su descarga. La funcionalidad de BLU está optimizada para análisis, eliminando la necesidad de crear índices o realizar tareas de configuración.
  • Actuación
    • BLU utiliza un modelo de almacenamiento en columnas, que reduce la cantidad de lecturas de disco y minimiza la cantidad de memoria utilizada para admitir un procesamiento de consultas muy rápido.
    • Los métodos avanzados de compresión de datos aplicados de forma predeterminada reducen el uso de memoria y espacio en disco.

A diferencia del entorno R, DB2 con BLU Acceleration explora todas las capacidades de hardware de su servidor y optimiza la utilización de recursos. Por ejemplo, cuando es posible, DB2 utiliza instrucciones SIMD del procesador en varios núcleos. Además, DB2 utiliza varios mecanismos de almacenamiento en caché de memoria para reducir la cantidad de lecturas de datos del disco. Esta optimización se realiza de forma automática. La plataforma ahora también está disponible en la nube como BLU Acceleration for Cloud.

Aceleración BLU para la nube

BLU Acceleration for Cloud es un servidor de base de datos basado en web optimizado para la máxima simplicidad. En solo unos minutos, puede crear tablas, cargar datos y comenzar a analizar. Los usuarios reciben herramientas adecuadas (IBM Data Studio e IBM InfoSphere Data Architect) para simplificar la creación y el mantenimiento de modelos y objetos de bases de datos (como tablas). Una vez creado su esquema, puede usar la consola web de la solución BLU Acceleration for Cloud para cargar sus datos. Hay muchas formas de descargar datos, incluidas archivos locales, servicios almacenamiento en la nube(por ejemplo, Amazon S3), IBM InfoSphere DataStage. En la consola web puede realizar análisis desde usando excel, SQL, Cognos Business Insight (BI), así como scripts y modelos en R.

En la figura. La Figura 1 muestra dos escenarios diferentes para un usuario del lenguaje R que trabaja con datos almacenados en el entorno BLU Acceleration for Cloud. Un analista de datos puede utilizar su propio entorno R, como RStudio, para extraer datos y analizarlos en su propia computadora. Como opción alternativa el analista puede crear y ejecutar scripts R en un servidor en la nube a través de un navegador.

Figura 1. Exploración de datos usando R (remoto)

Diagrama en la Fig. 2 presenta un ejemplo de un entorno R integrado en el entorno BLU Acceleration for Cloud. BLU Acceleration for Cloud proporciona tiempo de ejecución de R y almacenamiento de datos en una infraestructura de nube. BLU Acceleration for Cloud proporciona una consola basada en web que le permite descargar datos y realizar análisis en solo unos minutos. El análisis de datos se puede realizar utilizando herramientas SQL, herramientas de BI, scripts R y modelos R. Tiene a su disposición un sencillo editor de scripts R y la posibilidad de iniciar RStudio directamente desde su navegador. En la figura. La Figura 2 muestra un ejemplo de dicha integración, incluidos los resultados gráficos del análisis de los datos del censo de EE. UU. Para crear nuevos scripts, haga clic en el signo (+) resaltado a la izquierda esquina superior ventanas en la Fig. 2. Los scripts R se administran en la nube dentro de su propio espacio de trabajo. También puedes importar scripts para trabajar con ellos en la nube.

Figura 2. Exploración de datos en la nube usando R

Aceleración BLU para la nube - Plan de prueba

La mejor manera de adquirir experiencia en el uso de R para bases de datos es utilizar versión de prueba BLU Acceleration for Cloud Trial Plan como parte del programa beta abierto. Para comenzar, vaya al sitio web de BLU Acceleration for Cloud. Haga clic en el botón Pruebe la aceleración BLU ahora; Serás dirigido a la página de Planes y Precios. El plan Solo incluye el aprovisionamiento de un entorno de análisis BLU con el proveedor de su elección. servicios en la nube(IBM SoftLayer o Amazon Servicios web), y el plan de prueba le dará acceso instantáneo a su propio entorno durante 5 horas.

En la figura. La Figura 3 muestra el widget BLU Acceleration for para el plan de prueba. Haga clic en el botón comenzar. Su sistema comenzará a inicializarse; Cuando su servidor esté listo, haga clic en Iniciar aceleración BLU. Ahora puede iniciar sesión en la consola web con su ID de usuario administrador azul y la contraseña proporcionada. Para ver la integración de R, vaya al área Desarrollo de scripts R y cree un script de prueba utilizando el código que se muestra a continuación en el Listado 1. Ya que ha inicializado nuevo entorno, probablemente se le pedirá que instale R y RStudio (este procedimiento no lleva más de dos minutos). En el Listado 1, verá que un paquete llamado bluR está cargado en el script. Este paquete (actualmente solo disponible a través de BLU Acceleration for Cloud) utiliza RODBC como interfaz de acceso a datos.

Figura 3. Aceleración de BLU para la nube: plan de prueba

Tipos de datos y consideraciones de diseño

Los datos en el entorno R y los datos almacenados en bases de datos relacionales tienen cierto tipo o estructura. Debe comprender las diferencias en los tipos de datos para mostrar los valores de manera adecuada.

R tiene un conjunto muy limitado de tipos de datos básicos: caracteres, numéricos (enteros y números de punto flotante de doble precisión), lógicos, sin procesar (datos binarios). Los vectores de caracteres en R simplemente se asignan a datos SQL de tipo CHARACTER o VARCHAR. Los tipos de datos numéricos del servidor de bases de datos generalmente se asignan a datos ENTEROS y DOUBLE en el entorno R Debido a que el tipo de datos lógico en R no tiene un equivalente obvio entre los tipos de datos SQL, este tipo generalmente se asigna a un campo de texto en las tablas de la base de datos. Cuando trabaje con datos de series temporales, debe considerar cuidadosamente cómo se mostrarán los datos entre R y el servidor de la base de datos.

Desde el punto de vista métodos estadísticos Los datos continuos y categóricos se procesan de manera muy diferente. Los usuarios de R son conscientes de estas diferencias y codifican datos categóricos utilizando un tipo de datos como factor Una vez que los datos se han extraído de una base de datos, se debe considerar si los datos deben tratarse como datos de forma continua o como datos categóricos. Si los datos son verdaderamente categóricos, entonces la variable correspondiente debe recodificarse o convertirse utilizando la función factor().

La Tabla 1 proporciona un mapeo de términos entre R y DBMS relacional.

Tabla 1. Comparación de terminología (R y RDBMS)

Opciones de conexión

IBM Netezza y R

IBM Netezza Analytics es una plataforma integrada y diseñada específicamente para análisis avanzados. Los dispositivos Netezza admiten varias formas diferentes de utilizar R, incluido el análisis en la base de datos y el análisis del lado del cliente. con información sobre el uso de R en la plataforma Netezza.

El lenguaje R no tiene capacidades integradas para acceder bases de datos relacionales datos, pero hoy en día existe una gran cantidad de interfaces de acceso a datos que se pueden obtener de proveedores o del sitio web CRAN (Comprehensive R Archive Network).

A continuación, aprenderá a utilizar RJDBC o RODBC para acceder a datos almacenados en servidores de bases de datos DB2 desde el entorno R. Si planea acceder a otros servidores de bases de datos, puede usar estas mismas interfaces o explorar otros paquetes para acceder a bases de datos específicas.

Conexión mediante RJDBC

El paquete RJDBC se basa en DBI (interfaz de base de datos), ampliamente utilizado en la comunidad R. El paquete DBI contiene. clases virtuales, cuya implementación es responsabilidad del conductor proveedor. RJDBC utiliza una combinación de un controlador de base de datos compatible con JDBC y un JRE ( Tiempo de ejecución de Java Ambiente). Usaremos el controlador IBM JDBC (tipo 4) para mantener la conexión. Este controlador IBM JDBC se puede utilizar para acceder a bases de datos de la familia DB2, incluido DB2. para linux, Unix, Windows, DB2 para z/OS, DB2 i. Si aún no tiene el paquete RJDBC instalado en su entorno R, instálelo desde el repositorio CRAN con el comando install.packages("RJDBC") .

En el Listado 1, el paquete RJDBC carga un objeto R que representa el controlador JDBC. La ruta al archivo db2jcct4.jar se debe especificar en la variable CLASSPATH; y JAVA_PATH debería indicar la ubicación del JRE en ejecución. La función dbConnect() asigna un objeto al servidor de la base de datos. canal(canal o conexión). La conexión se realiza a una base de datos denominada SAMPLEDB, que se encuentra en un servidor con el nombre de host blueforcloud.imdemocloud.com. Tenga en cuenta que la conexión requiere una contraseña, pero este script no almacena ninguna.

Listado 1. BLU para Cloud - Script R
biblioteca (bluR) # Establece una conexión con el servidor de base de datos BLU ( conexión local, # ya que el entorno R se ejecuta en el mismo servidor) samplescon<- bluConnect("SAMPLEDB", "", "") # Создать простой запрос данных в виде строковой переменной query<-paste("select * from DB2INST1.US_FUEL_ECONOMY_AUGUST_2013") # Создать кадр данных R на основе SQL-оператора cars <- bludf(samplescon, query) # Вывести на печать характеристики кадра данных и некоторые данные из первой строки nrow(cars) ncol(cars) print (cars, row.names=FALSE) # Выполнить визуализацию в виде коробчатой диаграммы boxplot(COMB_FE_CONVENTIONAL_FUEL ~ CYL, cars, names = levels(cars$CYL), main="Fuel Consumption - 2013", xlab = "Number of Cylinders", ylab = "Miles/Gallon (mpg)") # Закрыть соединение с сервером BLU bluClose(samplescon)

Dedique unos minutos a trabajar con el plan de prueba de BLU Acceleration for Cloud y el script que se muestra en el Listado 1. El resto de este artículo proporcionará más información sobre cómo acceder a los datos desde R.

El Listado 2 muestra cómo utilizar la función dbSendQuery() para enviar una consulta SQL al servidor a través de un objeto de conexión. Los datos reales se devuelven al cliente solo cuando se ejecuta la función fetch(). Este script devuelve todas las filas del conjunto de resultados porque el segundo parámetro está establecido en -1.

Listado 2. RJDBC - recuperación de datos
consulta<- paste("select * from db2inst1.us_fuel_economy_august_2013") # Отправить запрос серверу баз данных rs <- dbSendQuery(conn, query) # Извлечь все строки данных df <- fetch(rs, -1)

En el Listado 3, el marco de datos df contiene los resultados de la consulta. El objetivo de este script es identificar los tipos de vehículos con mejor eficiencia de combustible y el modelo correspondiente. Los resultados muestran que, según nuestra tabla de 1.165 vehículos, el Toyota Prius tiene la mejor economía de combustible combinada.

Listado 3. RJDBC - Deshabilitar
# Eliminar todos los resultados a los que les faltan datos df<- na.omit(df) cat ("There are", nrow(df), "fuel economy results available with ") cat (ncol(df), "different variables.\n") # Найти в кадре данных наилучшие показатели по потреблению топлива best_fe <- max(df$COMB_FE_CONVENTIONAL_FUEL,na.rm=TRUE) cat("\nCar(s) with the best fuel consumption of",best_fe,"miles/gallon.\n\n") print (df,row.names=FALSE) # Отключиться от сервера баз данных dbDisconnect(conn) ---- OUTPUT from Script There are 1165 fuel economy results available with 18 different variables. Car(s) with the best fuel consumption of 50 miles/gallon. MODEL_YEAR MFR_NAME DIVISION CARLINE 2013 Toyota TOYOTA PRIUS 2013 Toyota TOYOTA PRIUS c

Si se devuelven valores NULL desde una tabla de base de datos, aparecen en el marco de datos de R como no disponibles (NA). La función na.omit() en la primera línea del Listado 3 elimina todos los casos con valores faltantes. Las variables del marco de datos R se recuperan de DB2 como cadenas de caracteres en mayúsculas. Para liberar recursos de la base de datos en el servidor, recuerde ejecutar la función dbDisconnect() al final de sus scripts R.

También puede vincular objetos R a sentencias SQL utilizando la función dbSendQuery() (Listado 4).

Listado 4. RJDBC - usando parámetros
mfr<- "BMW" query <- paste("select * from db2inst1.us_fuel_economy_august_2013 where mfr_name=?") # Отправить серверу баз данных запрос с подстановкой параметра rs <- dbSendQuery(conn, query, mfr) df.bmw <- fetch(rs, -1) # Преобразовать переменную в тип данных factor df.bmw$CYL <- factor(df.bmw$CYL) # Создать коробчатую диаграмму по числу цилиндров boxplot(COMB_FE_CONVENTIONAL_FUEL ~ CYL, df.bmw, names = levels(df.bmw$CYL), main="Fuel Consumption - 2013", xlab = "Number of Cylinders", ylab = "Miles/Gallon (mpg)")

En el Listado 4, el fabricante del valor no forma parte del organismo de solicitud; se envía como parte de la solicitud cuando se ejecuta la función dbSendQuery().

En la figura. La Figura 4 muestra el diagrama de caja que creamos fácilmente a partir del marco de datos devuelto.

Figura 4. Ejemplo de diagrama de caja

Conexión mediante RODBC

RODBC es una interfaz de acceso a datos DB2 más eficiente y rápida para usuarios de R. El paquete RODBC está disponible en el repositorio CRAN y lo utilizan muchos miembros de la comunidad R. Si el paquete RODBC aún no está instalado en su entorno R, instálelo. con el comando install.packages("RODBC ").

La interfaz ODBC fue desarrollada originalmente por Microsoft a principios de los años 1990. Desde entonces, se ha convertido en el estándar oficial para el acceso a datos bajo el nombre general SQL/CLI (Call Level Interface). El entorno ODBC consta del componente ODBC Driver Manager y un controlador compatible con ODBC para un servidor de base de datos específico. En los sistemas operativos Windows, el componente ODBC Driver Manager está integrado en la propia plataforma, pero en Linux u otras plataformas, el componente ODBC Driver Manager debe instalarse por separado.

Para conectarse a una base de datos utilizando el controlador RODBC, debe especificar la ubicación del servidor, el nombre de la base de datos y la información de acceso (por ejemplo, nombre de usuario y contraseña). El nombre de la base de datos normalmente se especifica como un DSN de ODBC. Un nombre DSN es un enlace detallado a una base de datos, que puede ser local o remota en relación con la computadora cliente. Se puede considerar un DSN como un alias de la base de datos; no es necesario que coincida con el nombre de la base de datos real configurada en el servidor.

Para crear nombres DSN en la plataforma Windows, utilice la herramienta Administrador de orígenes de datos ODBC, disponible en el menú Panel de control->Herramientas de administración. En la figura. La Figura 5 muestra varios DSN definidos en esta computadora cliente.

Figura 5. Herramienta Administrador de orígenes de datos ODBC de Windows

Si planea utilizar R y DB2 Express-C para Windows con bases de datos locales, los DSN de sus bases de datos ya deben existir en el sistema. Si desea acceder a una base de datos remota, debe hacer lo siguiente: obtener los detalles de la conexión del proveedor del servidor de la base de datos, catalogar la conexión y configurar el DSN en la herramienta Administrador de origen de datos ODBC.

Además, hay uno que puedes utilizar si quieres prescindir de los nombres DSN.

El paquete RODBC proporciona varias funciones relacionadas con las conexiones (Tabla 2).

Tabla 2. RODBC: funciones de conexión y metadatos
FunciónDescripción/propósitoInformación de entradaInformación de salida
fuentes de datos odbc()Proporciona una lista de DSN disponibles.No requeridoVector de caracteres de nombres DSN.
odbcConnect (dsn, uid, contraseña, ...)dsn="DSN_name", uid="USERID", pwd="contraseña" - otros parámetros opcionales
odbcDriverConnect(conexión="", ...)Establece una conexión con el servidor de la base de datos.cadena de conexión.
Los valores de DSN, ID de usuario y contraseña deben proporcionarse en una línea. Ver ejemplo en.
Un objeto de canal que representa una conexión de base de datos activa.
odbcGetInfo (canal)Proporciona información detallada sobre la conexión de base de datos activa.Un objeto de canal que representa una conexión activa con el servidor de bases de datos.Un vector de caracteres con nombre que describe la conexión, incluido el tipo de controlador ODBC y el nivel de cumplimiento de API.

Habiendo establecido una conexión ( canal) con nuestra base de datos, podemos usar funciones de metadatos para examinar los tipos de datos admitidos, las definiciones de tablas y las columnas definidas en ellos.

La Tabla 3 presenta tres funciones útiles de metadatos de bases de datos disponibles en RODBC.

Tabla 3. RODBC: funciones de metadatos de tablas y bases de datos
FunciónDescripción/propósitoInformación de entradaInformación de salida
sqlTypeInfo(canal, ...)Proporciona información sobre los tipos de datos de bases de datos ODBC admitidos.canalUn marco de datos de tipos de datos admitidos y sus características.
sqlTables(canal, ...)Proporciona una descripción de los objetos tabulares definidos dentro de una base de datos.canal
Parámetros opcionales recomendados: "schema=", "tableType="
Un marco de datos que contiene detalles sobre tablas, vistas y otros objetos tabulares en una base de datos.
sqlColumns(canal, tabla cuadrada, ...)Proporciona una descripción de las columnas definidas dentro de la tabla.canal, nombre de la tablaUn marco de datos que contiene detalles sobre los nombres de las columnas y otros atributos de la tabla.

Una vez que haya determinado con qué tabla desea trabajar, use la función sqlFetch() para recuperar los datos en R. RODBC asignará esos datos al tipo de datos R apropiado según las asignaciones especificadas contenidas en la salida de getSqlTypeInfo("DB2 /NT ").

Considere un script R simple que establece una conexión a una base de datos mediante un DSN y especifica información básica. El programa determinará la cantidad de objetos de tabla y columnas en la tabla especificada. La función sqlFetch() recupera todos los datos en R y muestra la primera fila que se devolvió en el marco de datos.

En el Listado 5, las funciones odbcConnect() y metadatos muestran que hay 27 tablas en el esquema "DB2INST1" y que la tabla de economía de combustible tiene 18 columnas definidas. La función sqlFetch() consulta el contenido de una tabla y crea un marco de datos llamado cars. Se muestran al usuario las primeras cuatro variables de la primera observación en el marco de datos; la conexión al servidor de la base de datos se cierra usando la función odbcCloseAll().

Listado 5. RODBC: establecimiento de una conexión y uso de funciones de metadatos
biblioteca(RODBC) dsn.nombre<- "blusamp" user.name <- "granthut" con1 <- odbcConnect(dsn=dsn.name,uid=user.name,pwd) table.list <- sqlTables(con1,tableType="TABLE", schema="DB2INST1") cat("There are", nrow(table.list), "tables in the DB2INST1 schema.\n") table.name <- "DB2INST1.US_FUEL_ECONOMY_AUGUST_2013" col.list <- sqlColumns(con1,table.name) cat("There are", nrow(col.list), "columns defined in", table.name,"\n") # Отобразить одну строку из таблицы cars <- sqlFetch(con1, table.name) print (cars, row.names=FALSE) # Закрыть соединение odbcCloseAll() cat("Database connections are closed.\n") ---- OUTPUT from Script There are 27 tables in the DB2INST1 schema. There are 18 columns defined in DB2INST1.US_FUEL_ECONOMY_AUGUST_2013 MODEL_YEAR MFR_NAME DIVISION CARLINE 2013 BMW BMW 135i Convertible Database connections are closed.

Otro método para establecer conexiones a bases de datos DB2 utilizando RODBC es utilizar la función odbcDriverConnect(). En el Listado 6, observe que db.name es el nombre real de la base de datos en el servidor de la base de datos, que No debe coincidir con el nombre DSN creado en la computadora cliente.

Listado 6. RODBC - método de unión directa
nombre.conductor<- "{IBM DB2 ODBC DRIVER}" db.name <- "SAMPLEDB" host.name <- "bluforcloud.imdemocloud.com" port <-"50001" user.name <-"granthut" # Используем полную строку соединения для установления соединения с базой данных SAMPLE con.text <- paste("DRIVER=",driver.name, ";Database=",db.name, ";Hostname=",host.name, ";Port=",port, ";PROTOCOL=TCPIP", ";UID=", user.name, ";PWD=",pwd,sep="") con1 <- odbcDriverConnect(con.text)

Extracción de datos

La principal motivación para utilizar R para analizar datos almacenados en servidores de bases de datos en lugar del análisis de archivos es que este enfoque ayuda a superar los desafíos asociados con grandes conjuntos de datos. Como se indicó anteriormente, de forma predeterminada, R carga todos los datos en la memoria, por lo que trabajar con grandes conjuntos de datos será más eficiente si recupera solo fragmentos de datos mediante consultas SQL condicionales.

Como se muestra en la Tabla 4, la función sqlQuery() le permite enviar cualquier consulta SQL válida al servidor de la base de datos. Si tiene autoridad para BOTAR tablas o eliminar datos, las funciones sqlDrop() y sqlClear() también están disponibles.

Tabla 4. RODBC: funciones de extracción y eliminación de datos
FunciónDescripción/propósitoInformación de entradaInformación de salida
sqlQuery (canal, consulta, ...)Ejecuta una consulta SQL en el servidor de la base de datos y devuelve los resultados.canal, consulta
opciones recomendadas: errores=FALSE (ayuda a capturar posibles errores)
Marco de datos del conjunto de resultados. Los datos se asignarán a tipos de datos R compatibles.
sqlDrop(canal, tabla cuadrada, ...)Elimina el contenido y la definición de una tabla de la base de datos.canal, mesaTenga en cuenta que esta función intentará realizar una operación DROP TABLE.
sqlClear(canal, tabla cuadrada, ...)Elimina todas las filas de una tabla en la base de datos.canal, mesaTenga en cuenta que esta función intentará realizar una operación TRUNCAR TABLA.

La función sqlQuery() altamente versátil se puede utilizar para emitir sentencias SQL DML (lenguaje de manipulación de datos) como SELECT, INSERT, UPDATE, DELETE y para emitir sentencias SQL DDL (lenguaje de definición de datos) como CREATE TABLE. La declaración SQL del Listado 7 contiene un error. El tipo de datos está especificado incorrectamente: la frase INTEGR debe tener el formato INTEGER. Afortunadamente, tenemos a nuestra disposición la función odbcGetErrMsg() para obtener y mostrar un mensaje de error detallado. Esta característica es muy útil al editar y probar scripts R.

Listado 7. RODBC - diagnóstico de errores
res<- sqlQuery(con1,"CREATE TABLE TESTDATA (c1 INTEGR)", errors=FALSE) if (res == -1){ cat ("An error has occurred.\n") msg <- odbcGetErrMsg(con1) print (msg) } else { cat ("Table was created successfully.\n") } ---- OUTPUT from Script An error has occurred. "42704 -204 SQL0204N \"INTEGR\" is an undefined name. SQLSTATE=42704\r\n" " ERROR: Could not SQLExecDirect "CREATE TABLE TESTDATA (c1 INTEGR)""

Almacenamiento de datos

El guardado de datos en bases de datos relacionales generalmente se realiza mediante la instrucción SQL INSERT. Si tiene un marco de datos R y desea almacenar esos datos en una base de datos relacional, use la función sqlSave(). De forma predeterminada, esta función crea una nueva tabla con los mismos datos contenidos en la variable del marco de datos. Los nombres de las columnas también coincidirán con los nombres de las columnas en el marco de datos. Si lo desea, es posible que no desee almacenar los nombres de las filas R del marco de datos en la tabla guardada, ya que generalmente hay una clave natural dentro de su conjunto de datos.

La función sqlSave() llena una tabla con datos de un marco de datos usando la instrucción SQL INSERT. Si desea almacenar un conjunto de datos grande, puede ser preferible crear un archivo de datos delimitado externo y luego utilizar un cargador específico de base de datos de alta velocidad para publicar los datos y compartirlos con otros analistas de datos. Una vez que sus datos se almacenan en una base de datos relacional, ya no tendrá que preocuparse por mantener su integridad y disponibilidad: el servidor de la base de datos se encarga de ello.

En el Listado 8, la función sqlSave() crea y completa una nueva tabla. Dado que el marco de datos se llama CLASSMARKS, la tabla tendrá el mismo nombre. En este escenario, la opción más segura permite que el script reemplace una tabla existente con el mismo nombre. De forma predeterminada, se devuelve un error al intentar guardar datos en una tabla existente.

Listado 8. RODBC - guardar datos
nombre.pestaña<- "CLASSMARKS" NAMES <- c("Bob","Mary","Fred") MARKS <- c(78,88,91) # Создать кадр данных с результатами теста и именами CLASSMARKS <- data.frame (NAMES,MARKS,stringsAsFactors=FALSE) # Создать новую таблицу и наполнить ее данными из кадра данных CLASSMARKS sqlSave(con1, CLASSMARKS, rownames=FALSE,safer=FALSE) NEWCLASS <- sqlFetch(con1,tab.name) cat("Mean mark for the class is", mean(NEWCLASS[,"MARKS"]),"\n") ---- OUPUT from Script Mean mark for the class is 85.66667

También puede actualizar datos en tablas existentes utilizando la función RODBC sqlUpdate(). Como alternativa más eficiente, recomiendo usar declaraciones SQL UPDATE, o simplemente guardar los nuevos datos en una tabla temporal usando la función sqlSave() y luego realizar una declaración SQL UPSERT en esas tablas. La función sqlUpdate() requiere un parámetro de índice para identificar de forma única cada fila en una tabla existente.

Usando procedimientos almacenados

Los procedimientos almacenados son módulos de software administrados y ejecutados por el servidor de la base de datos. Debido a que los datos residen en el mismo servidor que el programa, los procedimientos almacenados pueden ser muy eficientes y realizar algunas tareas mucho más rápido que las aplicaciones del lado del cliente. Los procedimientos almacenados de DB2 se pueden escribir utilizando una variedad de lenguajes de programación, como Java, C, PL/SQL y SQL PL. Si tiene procedimientos almacenados ya preparados, o si su trabajo analítico se puede simplificar o mejorar utilizando procedimientos almacenados, puede llamarlos fácilmente desde un script R usando RJDBC o RODBC.

En el Listado 9, el procedimiento almacenado GETMEDIAN se llama usando la función sqlQuery(). En este escenario, los datos devueltos son un marco de datos que contiene un único valor. El tema de interés se pasa al procedimiento almacenado como parámetro de entrada. Actualmente no existe ningún mecanismo disponible para recuperar múltiples conjuntos de resultados o parámetros de salida de un procedimiento almacenado de DB2.

Listado 9. RODBC - procedimientos almacenados
# Llame a un procedimiento almacenado para obtener la calificación promedio (el nombre de la materia se pasa en la variable de entrada materia) materia<-"MATH" median <- sqlQuery(con1,"CALL GETMEDIAN (subject)") print (median)

Conclusión

El lenguaje R es una potente herramienta de análisis de datos de código abierto que le ayuda a explorar datos y crear modelos predictivos. Cuando sus datos exceden los límites de memoria de R, puede recurrir a cargar los datos en un servidor de base de datos, como IBM DB2 con BLU Acceleration o IBM BLU Acceleration for Cloud. En este artículo, exploramos los beneficios de usar R con bases de datos en lugar de analizar datos en archivos de texto delimitados. También conoció el uso de los paquetes RJDBC y RODBC para analizar big data almacenados en DB2.




Arriba