viernes, 29 de diciembre de 2023

Cargar rápidamente scripts de SQL con PLSQL Developer

Hay veces que tenemos un script con miles de instrucciones INSERT INTO o similar en un  fichero de Texto y queremos ejecutarlo.  Si lo copiamos y lo pegamos en nuestra ventana SQL Window (Ventana roja)  de PLSQL Developer. 

Cargar rápidamente scripts de SQL con PLSQL Developer
puede tardar bastante tiempo en ejecutarse, eso sin contar con lo problemático que puede ser abrir el fichero para copiarlo todo y pegarlo en la ventana.

Hay otra forma más cómoda y algo más rápida que no nos obliga a abrir el fichero para copiar su contenido y pegarlo en la ventana. Para ello basta con abrir una Command Window (recuadro azul con flecha de la figura anterior).

Una vez hemos abierto esta ventana simplemente tenemos que escribir el nombre y la ruta del fichero que contiene el script con un @ delante y pulsar Enter.

 

Cargar rápidamente scripts de SQL con PLSQL Developer

SQL> @C:\Ruta\subdirectorio\FICHERO_CON_SCRIPT_ORACLE.sql

Conviene insertar en nuestro script un comando COMMIT; cada cierto número de líneas para evitar saturar la base de datos.


sábado, 14 de octubre de 2023

Redes neuronales para predicciones

Veremos el concepto de implementación de modelos predictivos y predicciones utilizando redes neuronales. El análisis predictivo es una forma de análisis en el que trabajamos con datos históricos para construir modelos predictivos. Podemos utilizar varios algoritmos matemáticos, estadísticos y de redes neuronales para construir modelos predictivos. Identificar y capturar tendencias importantes a partir de los datos históricos y luego aplicar los modelos predictivos en los datos actuales para predecir eventos futuros o proporcionar sugerencias prácticas para obtener resultados óptimos. Cuando construimos modelos de análisis predictivo utilizando redes neuronales, se pueden clasificar en dos tipos diferentes, clasificación y regresión.

                             Redes neuronales para predicciones

Exploraremos las características esenciales de cada una de las categorías de modelos de análisis predictivo para comprender sus diferentes características e implementaciones. La predicción mediante el modelo de clasificación se basa en etiquetas de clase categóricas. Usando el modelo de clasificación, podemos predecir a que categoría pertenece cada dato de entrada,  tiene opciones de salida finitas, y no  están disponibles en un orden dado en particular. La predicción basada en la clasificación implica dos pasos diferentes. Primero construir el modelo clasificador. El segundo paso es utilizar el modelo para la clasificación.

La construcción del modelo clasificador  se conoce como fase de aprendizaje. En este paso, generalmente utilizamos un algoritmo de clasificación para construir el modelo clasificador. Después de construir el modelo, podemos comenzar a usar el modelo para la clasificación. Alimentamos con datos de prueba el modelo para estimar la precisión de las reglas de clasificación. En este paso en particular, realizamos dos análisis diferentes para identificar y segregar los atributos irrelevantes y relevantes. Realizamos un análisis de correlación para identificar los atributos relacionados seguido de un análisis de relevancia para segregar los atributos irrelevantes.

                                Clasificacion

Un modelo de regresión, a diferencia del modelo de clasificación, es esencialmente una metodología estadística que utilizamos a menudo para la predicción numérica. Generalmente utilizamos un modelo de regresión para predecir aquellos valores que son continuos a través de cantidades numéricas. Los valores predichos son típicamente infinitos y están ordenados. Podemos utilizar el análisis de regresión para modelar las relaciones entre una variable de respuesta y una o más variables predictoras. Los modelos de regresión son muy útiles para comprender la asociación entre los cambios en los valores predictores y los cambios en la media de respuesta. Los modelos de regresión pueden incluso ayudar a facilitar las predicciones basadas en los valores de los predictores.

                     regresión

¿Cuáles son los diferentes mecanismos y algoritmos que podemos utilizar para construir modelos predictivos y facilitar las predicciones? Algunos de los mecanismos y algoritmos destacados que podemos utilizar para construir modelos predictivos incluyen la regresión lineal y las redes neuronales. La regresión lineal es la forma más simple de modelo de regresión que podemos usar para construir modelos predictivos con el supuesto de que existen relaciones entre las variables de entrada y salida. También podemos utilizar redes neuronales para construir modelos predictivos. 

La construcción de modelos y la predicción mediante redes neuronales  implican varios pasos iterativos. Comenzamos creando el modelo y usamos ciertos algoritmos y reglas para entrenar el modelo. Luego usamos el modelo en conjuntos de datos de prueba para verificar el nivel de precisión del modelo comparando los valores de salida con los valores reales. Y finalmente, después de haber alcanzado el nivel de precisión deseado, comenzamos a utilizar el modelo con datos actuales para sugerir acciones futuras basadas en los resultados. Aparte de los modelos lineales y las redes neuronales, existen otros algoritmos y métodos que podemos utilizar para construir modelos predictivos.

mecanismos de predicción


Algunos de los modelos predictivos destacados que se implementan comúnmente en la actualidad incluyen modelos lineales, árboles de decisión, máquinas de vectores de soporte o SVM y Naive Bayes. Veremos los cuatro modelos predictivos diferentes que acabamos de mencionar. 

modelos lineales y árboles de decisión


Comenzaremos con el modelo lineal y los árboles de decisión. Los modelos lineales son uno de los algoritmos estadísticos más utilizados para construir modelos de relación entre dos variables diferentes. La primera variable se conoce generalmente como variable predictora y la segunda variable se conoce como variable de respuesta. El árbol de decisiones es una forma o tipo de gráfico. Usamos la representación gráfica del árbol de decisiones para representar posibilidades y resultados. Los nodos representan eventos, mientras que los bordes representan condiciones o reglas de decisión. SVM, que es la abreviatura de máquina de vectores de soporte, también se conoce como vectores de soporte.

SVN y Naive Bayes

Este modelo predictivo en particular se basa en la búsqueda de los puntos más cercanos. Es una forma de algoritmo de aprendizaje supervisado y se puede utilizar para construir modelos predictivos para clasificación y regresión. El algoritmo final del modelo predictivo, Naive Bayes, se usa comúnmente para problemas de clasificación. Naive Bayes se basa en el teorema de probabilidad de Bayes, que también se conoce como reglas de Bayes o ley de Bayes. Este algoritmo en particular se usa comúnmente para facilitar la clasificación de texto que involucra conjuntos de datos de entrenamiento de alta dimensión.  

predicción con red neuronal

Las redes neuronales brindan la capacidad de procesar datos históricos y actuales para estimar valores futuros. Identifican y extraen cualquier correlación compleja en patrones que estén ocultos en los datos. Los datos que se alimentan como entrada en la capa de entrada pueden tener formatos diversificados de fuentes diversificadas. Por ejemplo, la entrada pueden ser números, textos, imágenes, videos, audios, transmisión de datos, entre otros. Podemos usar los datos de entrada y dividirlos en conjuntos de datos de prueba y de entrenamiento. Usamos los conjuntos de datos de entrenamiento para entrenar la red, y usamos los conjuntos de datos de prueba para probar la precisión de la salida proporcionada por la red. La capa oculta es responsable de las tareas computacionales.

diseño de un modelo predictivo de red neuronal

Y en términos de predicción, esta capa puede utilizar funciones de predicción para facilitar la predicción y transmitir los valores predichos a la capa de salida para proporcionar conocimientos útiles o sugerir cursos de acción futuros. Veremos cómo diseñar y construir modelos de predicción de redes neuronales, el proceso de diseño y construcción implica varios pasos iterativos que se repiten hasta que se produce el modelo deseado. El primer paso es identificar el problema o el escenario del caso de uso y, en consecuencia, construir el enunciado del problema o la descripción del caso.

Después de derivar la descripción del caso, podemos comenzar a analizar y revisar la descripción del caso para comprender el resultado esperado del diseño.


sábado, 29 de julio de 2023

Como crear un Procedimiento almacenado de Oracle con un bucle

Queremos ejecutar una acción, por ejemplo llamar a un paquete de Oracle PACK.FUNCION(‘Valor’) Pero en valor queremos meter miles de valores diferentes.

Para ello creamos un Procedimiento almacenado para que el resultado de la select sea lo que se se mete como parámetro en la función del paquete Oracle.

 Sea la select del tipo: SELECT CAMPO FROM TABLA WHERE CAMPO = ‘CONDICION’

Como crear un Procedimiento almacenado de Oracle con un bucle


 
Para crear un bucle en un SP de Oracle

create or replace NONEDITIONABLE PROCEDURE  PROCEDIMIENTO_ALMACENADO_CON_BUCLE IS

      CURSOR C1 IS SELECT CAMPO FROM TABLA WHERE CAMPO = ‘CONDICION’;

BEGIN

     FOR I IN C1 LOOP

         PACK.FUNCION (I);

     END LOOP;  

 END;

 Y luego se llama al SP ejecutando esto como si  fuera una query


BEGIN

PROCEDIMIENTO_ALMACENADO_CON_BUCLE;

END;

 

sábado, 8 de julio de 2023

Como probar código en TOAD, (ejemplo: Buscar un valor en toda la base de datos)

Hay veces que tenemos código de Oracle en a base de datos (por ejemplo un PL) y queremos saber si funciona bien o no , o probarlo para ver que hace.

Para probar código con TOAD lo que tenemos que hacer es declarar primero las variables que vayamos a utilizar.

declare

  VARIABLE1    varchar2(1000);

  VARIABLE2    varchar2(1000);

  VNUMERICA1   number;

  VNUMERICA2   number;

   newparams varchar2(2000) := ‘valores por defecto a introducir en el código';

begin

Luego ponemos el   

  begin

        VARIABLE1 :=newparams;

        dbms_output.enable();

        dbms_output.put_line(VARIABLE1);

        dbms_output.put_line(VARIABLE2);

end;

Abrimos un Editor y pegamos nuestro código a probar

Se coloca en una pestaña SQL de TOAD


Como probar código en TOAD, (ejemplo: Buscar un valor en toda la base de datos)


Se pulsa el triangulo verde para ejecutar.

Como probar código en TOAD, (ejemplo: Buscar un valor en toda la base de datos)

 

Vemos el resultado en la pestaña DBMS Output

Como probar código en TOAD, (ejemplo: Buscar un valor en toda la base de datos)
Activamos la salida pulsando sobre el circulo rojo (flecha roja) y se vuelve verde, entonces ponemos ver la salida en el botón de las dos flechas verdes (flecha azul)

 

Como probar código en TOAD, (ejemplo: Buscar un valor en toda la base de datos)

El resultado sale en la pestaña inferior DBMS_Output porque lo hemos forzado con las variables:

        dbms_output.put_line(VARIABLE1);


Buscar un valor en toda la base de datos

En este caso el código que probamos sirve para buscar un valor en toda la base de datos: Los valores en rojo tienen que sustituirse por el propietario de nuestra base de datos y por el valor que deseemos buscar.

DECLARE

sql_str VARCHAR2(1000);

sql_del VARCHAR2(1000);

cadena_buscar VARCHAR(200);

total_val number;

--cursor c1 IS SELECT OWNER,TABLE_NAME,COLUMN_NAME,DATA_TYPE FROM dba_tab_columns WHERE owner='PROPIETARIO_BBDD' AND DATA_TYPE IN ('CHAR','VARCHAR2');

cursor c1 IS SELECT OWNER,TABLE_NAME,COLUMN_NAME,DATA_TYPE FROM all_tab_columns WHERE owner='PROPIETARIO_BBDD' AND DATA_TYPE IN ('CHAR','VARCHAR2');

BEGIN

    cadena_buscar:='VALOR_A_BUSCAR';

    FOR fila IN c1

        LOOP

            sql_str := 'SELECT COUNT(*) FROM '||fila.OWNER||'.'||fila.TABLE_NAME||' where '||fila.COLUMN_NAME||' like ''%'||cadena_buscar||'%''';

            sql_del := 'DELETE FROM '||fila.OWNER||'.'||fila.TABLE_NAME||' where '||fila.COLUMN_NAME||' like '''||cadena_buscar||'''';

            EXECUTE IMMEDIATE sql_str INTO total_val;

            IF total_val>0 then

                dbms_output.put_line(sql_str);

                dbms_output.put_line(fila.OWNER||'.'||fila.TABLE_NAME||'.'||fila.COLUMN_NAME||' Aciertos '||total_val);

                dbms_output.put_line(sql_del);

                dbms_output.put_line('---');

            end IF;

        END LOOP;

    END;


Otro código de búsqueda:

SET SERVEROUTPUT ON SIZE 100000 

 DECLARE 

 match_count INTEGER;

 BEGIN FOR t IN 

 (SELECT owner, table_name, column_name FROM all_tab_columns WHERE owner = ''PROPIETARIO_BBDD ' 

 and data_type LIKE '%CHAR%') LOOP EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || t.owner || '.' || t.table_name || 

 ' WHERE '||t.column_name||' = :1' INTO match_count USING 'VALOR_A_BUSCAR'; 

 IF match_count > 0 THEN dbms_output.put_line( t.table_name ||' '||t.column_name||' '||match_count ); 

 END IF;

 END LOOP; 

 END;






sábado, 17 de junio de 2023

Generar consultas complejas de Oracle con TOAD, a partir de un esquema visual

Hay veces que nos piden queries muy complejas y resulta difícil dar con la relación ideal entre tablas para sacar nuestra querie, pero existen recursos gráficos que nos permiten visualizar las tablas de las que queremos sacar la información y sacar sus relaciones entre ellas, (aquí con SQL Server) una vez establecidas estas relaciones la herramienta nos propone la query automáticamente.

En este caso utilizaremos TOAD de Oracle, en este caso desde Database elegimos Report y la opción ER Diagram.

 

Generar consultas complejas de Oracle con TOAD, a partir de un esquema visual

Aparece una cruz azul que pulsamos para elegir que tablas queremos de la base de datos, si queremos todas las relacionadas con ella marcamos el check de arriba (auto select), pero si queremos elegirlas una a una lo desmarcamos.

 

Generar consultas complejas de Oracle con TOAD, a partir de un esquema visual

Elegidas las tablas pulsamos ok, y nos muestra el esquema ER. 

 

Esquema ER TOAD

Si queremos sacar la query correspondiente a nuestro esquema, pulsamos sobre el botón SQL

Generar consultas complejas de Oracle con TOAD, a partir de un esquema visual


 Se nos abrirá una pestaña inferior con la query

 

Generar consultas complejas de Oracle con TOAD, a partir de un esquema visual

También podemos abrir una pestaña nueva para tener un esquema diferente

Generar consultas complejas de Oracle con TOAD, a partir de un esquema visual


Para elegir las columnas de la query marcamos la tabla del panel derecho y hacemos doble clic sobre ella, al marcar las columnas, se nos van escribiendo en la query

 

Generar consultas complejas de Oracle con TOAD, a partir de un esquema visual

También podemos arrastrar y soltar la tabla desde el panel derecho y elegir las columnas (si tiene muchas las vamos a ver pequeñas) 

Generar consultas complejas de Oracle con TOAD, a partir de un esquema visual

Para verlas grandes podemos pulsar sobre la lupa y elegir 100%

Generar consultas complejas de Oracle con TOAD, a partir de un esquema visual


Si no encontramos las tablas del panel derecho, podemos sacarlas con View -> object palette.

Generar consultas complejas de Oracle con TOAD, a partir de un esquema visual

Una vez tenemos abierto nuestro esquema ER podemos modificarlo y se irá cambiando la query, podemos pinchar y arrastrar desde un campo de una tabla hasta otro para crear relaciones INNER JOIN 

Generar consultas complejas de Oracle con TOAD, a partir de un esquema visual

si pulsamos con el botón derecho del ratón sobre el panel podemos modificar nuestra Where, having, añadir objetos, etc.

Generar consultas complejas de Oracle con TOAD, a partir de un esquema visual

Por ejemplo si pulsamos sobre Where conditions, se abrirá una pantalla bastante completa para modificar nuestra condición WHERE.

Generar consultas complejas de Oracle con TOAD, a partir de un esquema visual



sábado, 3 de junio de 2023

Poner página n de m al comienzo de un informe JasperReports

En muchas ocasiones es necesario poner en un informe en una esquina, algo del estilo “Página n de m” siendo n la página actual y m el número total de página del informe.

En JasperReports ambos números se muestran utilizando una misma variable, basta con cambiar una de sus propiedades. 

Existe en JasperReports una variable llamada PAGE_NUMBER en el panel de la parte inferior izquierda llamado Outline

Poner página n de m al comienzo de un informe JasperReports


Debemos arrastrar y soltar esta variable dos veces sobre  nuestro informe. Una vez hecho esto basta con ir al panel de propiedades de la caja arrastrada (text_field) y sobre la pestaña  text field, ponemos el campo Evaluation time Now en la que queremos que muestre la página actual y Report en la que queremos que muestre las páginas totales.

 

Poner página n de m al comienzo de un informe JasperReports

En el informe nos quedará así:

"Página  " + $V{PAGE_NUMBER} + " de " $V{PAGE_NUMBER}

Al ejecutarlo veremos algo similar a esto:

Página 4 de 30


sábado, 20 de mayo de 2023

Depurar un paquete de Oracle con TOAD

Para depurar un paquete de base de datos con TOAD primero abrimos el buscador de objetos de la base de datos con Database-> Schema Browser

 

Depurar un paquete de Oracle con TOAD

Elegimos paquetes (packages) 

 

Depurar un paquete de Oracle con TOAD



Y elegimos el paquete y procedimiento a ejecutar

Depurar un paquete de Oracle con TOAD


Situados sobre el paquete a depura, con el botón derecho del ratón pulsamos sobre el procedimiento y elegimos Compile-> Compile with Debug


Depurar un paquete de Oracle con TOAD
Nos sale una pantalla en la que elegimos la primera opción Refresh Items One by One

Depurar un paquete de Oracle con TOAD

Hecho esto nos colocamos sobre el procedimiento o función a depurar y hacemos doble click sobre él para abrirlo en el editor


Ahora  sobre el editor podemos colocarnos sobre una línea y con el botón derecho del ratón elegimos Debug-> Set Breakpoint para establecer sobre el código los puntos de ruptura que deseemos.

 

Depurar un paquete de Oracle con TOAD



Para comenzar la depuración pulsamos sobre el botón con el triángulo verde que pone SQL

Depurar un paquete de Oracle con TOAD




Y le decimos que si a los mensajes que nos salgan hasta llegar a la pantalla para rellenar las variables. Una vez en esta pantalla le ponemos a cada variable el valor con el que vayamos a depurar nuestro código.

 

Depurar un paquete de Oracle con TOAD


Y pulsamos Ok,  ahora para depurar debemos ir pulsando sobre los botones Step Over, trace Into, etc según deseemos.

 

Depurar un paquete de Oracle con TOAD


El código se irá ejecutando paso a paso.   Y podremos ver los valores que van tomando las variables y donde están nuestros posibles errores.  Podemos terminar la depuración con el botón Terminate Execution.


sábado, 6 de mayo de 2023

Generar Scripts de Base de Datos desde SQL Developer

Hay veces que necesitamos genera un script de Base de datos para hacer alguna tarea. Para ello no es necesario teclear todo el script, sobre todo si se trata de cientos o miles de líneas y además podemos cometer errores. Suele ser más efectivo que lo genere la propia base de datos desde SQL Developer. Para ello, basta con generar la query que necesitemos y una vez hecha, podemos generar un script con sus resultados. Por ejemplo en este caso vamos a genera cientos o miles de instrucciones insert a partir de un simple SELECT * FROM NOMBRE_TABLA.

Para generar scripts desde SQL Developer, sobre las tablas, pulsamos Botón derecho de ratón y Exportar

 

Generar Scripts de Base de Datos desde SQL Developer

Definimos el archivo de destino y pulsamos siguiente.

 

Generar Scripts de Base de Datos desde SQL Developer

Si deseamos sólo un número determinado de registros y no la tabla entera, podemos definir un WHERE

 

Generar Scripts de Base de Datos desde SQL Developer

Pulsamos siguiente

 

Generar Scripts de Base de Datos desde SQL Developer

Y pulsamos terminar

 

Generar Scripts de Base de Datos desde SQL Developer

Al final se genera el DDL en pantalla

 

Generar Scripts de Base de Datos desde SQL Developer


O si lo deseamos, también podemos descargarlo en un archivo


Generar Scripts de Base de Datos desde SQL Developer



sábado, 22 de abril de 2023

Pasar parámetros de un Informe principal a un informe secundario (subreport) con JasperReports

Hay veces que si tenemos un informe complejo sale más a cuenta crear un informe auxiliar y luego llamar a este desde el informe principal. El problema es que necesitamos que los parámetros de entrada del informe principal, se pasen al subinforme para evitar que el informe muestre unos datos y el subinforme otros diferentes.

Para hacer esto una vez creado nuestro subinforme, lo añadimos a nuestro informe principal, arrastrando sobre este un objeto subreport de la pestaña Palette que aparece arriba a la derecha del diseñador de informes de JasperReports.

 

subreport con JasperReports

Al hacer esto, nos sale un diálogo sobre el que elegimos el subinforme pulsando sobre el botón Select a Report File.

 

Select a Report File.

Esto nos mostrará otra pantalla sobre la que elegiremos la primera opción.

(subreport con JasperReports

Workspace resource (an element inside the worspace) y pulsamos sobre el botón Browse para buscar nuesro subinforme (previamente creado como un informe normal y corriente)

 

subreport con JasperReports


Una vez creado nuestro subinforme lo vemos sobre nuestro informe.

Vamos al panel de propiedades del subinforme.

subreport con JasperReports
 

Y pulsamos sobre el botón Edit Parameters y en la pantalla que se abre pulsamos el botón Copy From Master, esto nos pasará a nuestro subinforme los parámetros del informe principal.

 

subreport con JasperReports

Totalizar campos parciales

Ahora nos piden totalizar un campo parcial dentro de nuestro informe, por ejemplo queremos saber el total de ventas por mes en nuestro informe principal de ventas anuales. Dentro de nuestro subinforme, sobre el panel inferior izquierdo (Outline) nos colocamos sobre el Subreport y con el botón derecho del ratón desplegamos y elegimos Create Group.

 

subreport con JasperReports

Elegimos el campo que queremos totalizar y lo arrastramos hasta el Footer del grupo recién creado. Al soltarlo nos sale un cuadro de diálogo en el que nos pide el tipo de totalización, elegimos Sum, pero podemos elegir cualquier valor de los que nos muestra el desplegable según nuestras necesidades.