Uso de operadores de flujo de datos
En Data Integration, los operadores de flujo de datos representan orígenes de entrada, destinos de salida y transformaciones que se pueden utilizar en un flujo de datos.
En el panel Operadores, arrastre los operadores al lienzo para diseñar un flujo de datos. A continuación, utilice el separador Detalles del panel Propiedades para configurar las propiedades básicas y necesarias de cada operador. Cuando corresponda, utilice el separador Opciones avanzadas para especificar otras propiedades.
En general, un operador de flujo de datos puede tener uno o más puertos de entrada y uno o más puertos de salida para que los datos fluyan por ellos. Por ejemplo, puede conectar el mismo puerto de salida de origen a puertos de entrada en un filtro, una unión y un operador de destino. También puede conectar otro operador de origen al mismo puerto de entrada de unión.
Un flujo de datos debe incluir al menos un operador de origen y un operador de destino para que sea válido. Si bien Data Integration soporta varios operadores de destino en un flujo de datos, un operador de destino solo puede tener un puerto de entrada.
Para conectar los operadores, pase el cursor sobre un operador hasta que vea el conector (un círculo pequeño) en el lado derecho del operador. A continuación, arrastre el conector al siguiente operador al que desea conectarse. La conexión es válida cuando una línea conecta los operadores después de soltar el conector.
Una línea de conexión simboliza cómo fluyen los datos de un nodo al otro. Aunque puede arrastrar un conector visible de un objeto a otro, no puede tener más de una línea de conexión de entrada a un operador de filtro, expresión, agregación, valor distinto, ordenación y destino.
Para los tipos de datos complejos, consulte Tipos de datos jerárquicos para saber lo que está soportado. Es posible que no pueda realizar algunas configuraciones en el separador Atributos y el separador Datos del panel Propiedades.
Operadores de datos
Data Integration proporciona el operador de origen y el operador de destino para agregar entidades de datos de entrada y salida que sirvan como entrada a flujos de datos y la salida para datos transformados.
Para configurar la entidad de datos de entrada o salida para un operador de datos en un flujo de datos, primero debe seleccionar un activo de datos, una conexión y un esquema (o un cubo).
Las selecciones solo se realizan en el orden mostrado en el separador Detalles del panel Propiedades haciendo clic en Seleccionar cuando la opción está activada junto al tipo de recurso.
Por ejemplo, al agregar por primera vez un operador de origen, solo se activa la selección del activo de datos. La opción de selección para el siguiente tipo de recurso, Conexión, solo se activa después de realizar una selección para el objeto anterior.
Al hacer clic en Seleccionar junto a un recurso, aparece un panel para seleccionar el objeto que desea. Puede utilizar el menú de recursos para seleccionar el objeto o seleccionar Ver todo para utilizar otro panel para examinar o buscar y, a continuación, seleccionar el objeto.
Al seleccionar un objeto de recurso, cada selección posterior se basa en la relación padre-hijo heredada de la selección anterior. Una ruta en la parte superior del panel de selección muestra la jerarquía de selección. Por ejemplo, supongamos que ha seleccionado el activo de datos "Activo de datos de Oracle Database 1" y la conexión "Conexión por defecto". Al seleccionar el esquema, la ruta de navegación se muestra como "Desde los datos de Oracle Database asset1 mediante la conexión por defecto".
Después de seleccionar un activo de datos, una conexión y un esquema (o cubo), seleccione una entidad de datos de la lista de entidades de datos disponibles.
En general, puede hacer lo siguiente en el panel Examinar entidades de datos:
-
Examine las entidades de datos disponibles y seleccione una entidad por su nombre.
-
Filtre la lista disponible para buscar y, a continuación, selecciónela. En el campo de búsqueda, introduzca parte del nombre o el nombre completo de la entidad y pulse Intro para iniciar la búsqueda. La búsqueda es sensible a mayúsculas/minúsculas. Por ejemplo, si las entidades de datos disponibles incluyen
BANK_US
yBANK_EU
, introduzcaBANK
y, a continuación, seleccione en la lista filtrada. -
Utilice uno o más parámetros en la cadena de búsqueda. Por ejemplo:
CUSTOMERS_${COUNTRY}
Para utilizar un nombre de entidad de datos con parámetros para seleccionar el recurso de entrada o salida, consulte Uso de parámetros en nombres de entidades de datos.
Según el tipo de activo de datos de un recurso, después de seleccionar una entidad de datos, puede que sea necesaria más configuración en el separador Detalles o en el separador Opciones avanzadas del panel Propiedades.
Para evitar que un objeto de recurso, como un activo de datos o una conexión de un flujo de datos, esté enlazado permanentemente a un recurso específico, asigne un parámetro a ese objeto.
Puede asignar el parámetro después o antes de seleccionar el objeto de recurso.
-
En el flujo de datos, agregue el operador de origen o de destino. Tras realizar una selección para un tipo de recurso, seleccione Asignar parámetro junto al nombre del recurso para utilizar otro panel para seleccionar y asignar el parámetro para el objeto seleccionado. Si un tipo de parámetro adecuado no está disponible, puede agregar un parámetro y, a continuación, asignarlo.
Nota
La asignación de parámetros no está disponible para una entidad de datos cuyo nombre incluya un parámetro (comoBANK_${REGION}
). No puede enlazar un recurso de entidad con parámetros a otro parámetro. -
También se puede agregar el operador de origen o de destino, a continuación, seleccionar Asignar parámetro para utilizar un panel a fin de asignar un parámetro y seleccionar el recurso para el objeto al mismo tiempo. En el panel Agregar parámetro, seleccione un recurso basado en la relación principal-secundario heredada de la selección anterior. La ruta en la parte superior del panel muestra la jerarquía de selección.
Consulte también Uso de parámetros de flujo de datos.
Puede incluir uno o más parámetros de flujo de datos en el nombre del recurso de entidad de datos que especifique para un operador de datos.
La sintaxis que se utilizará para un parámetro de flujo de datos en un nombre de entidad de datos es ${PARAMETER_NAME}
. Por ejemplo: CUSTOMERS_${COUNTRY}
Un nombre de parámetro distingue entre mayúsculas y minúsculas y cada parámetro debe tener un valor por defecto.
Por ejemplo, CUSTOMERS_${COUNTRY}
puede devolver la tabla de bases de datos CUSTOMERS_USA
y BANK_${COUNTRY}/*
los archivos de Object Storage en BANK_EU
.
Para utilizar parámetros en los nombres de entidades de datos al configurar un operador de datos, puede:
- Agregue el parámetro al flujo de datos antes de agregar el operador de datos
- Agregue el parámetro en el momento de configurar la entidad de datos del operador
Cómo agregar un parámetro
En un flujo de datos, seleccione Parámetros en el menú Ver de la barra de herramientas del lienzo para abrir el panel Parámetros.
En el panel Parámetros, seleccione Configuración y, a continuación, seleccione Agregar.
En el panel Agregar parámetro, configure un parámetro del tipo de datos adecuado, por ejemplo, VARCHAR o NUMERIC, y agregue un valor por defecto.
Durante la configuración de entidades de datos en un flujo de datos, puede buscar las entidades de datos disponibles introduciendo el nombre del parámetro en el panel Examinar entidades de datos. En el campo de búsqueda, comience a escribir ${
seguido de cualquier carácter. Si el principio del nombre del parámetro coincide con los parámetros existentes en el flujo de datos, se muestra una lista de nombres sugeridos. Seleccione un parámetro de la lista, complete la sintaxis agregando }
y, a continuación, pulse Intro.
Cómo agregar un parámetro en el momento de la configuración de la entidad de datos
En el panel Examinar entidades de datos, puede hacer lo siguiente:
-
En el menú Más Acciones, seleccione Agregar Parámetro de Flujo de Datos para utilizar el panel Agregar Parámetro de Flujo de Datos. Especifique el tipo de datos, el valor por defecto y otras propiedades para el parámetro que desea agregar y utilizar.
-
En el campo de búsqueda, comience a escribir
${
seguido de cualquier carácter. Si el principio del nombre del parámetro coincide con los parámetros existentes en el flujo de datos, se muestra una lista de nombres sugeridos. Seleccione un parámetro de la lista, complete la sintaxis agregando}
y, a continuación, pulse Intro. -
En el campo de búsqueda, introduzca el nombre del parámetro, por ejemplo
${PARAMETER_NAME}
). Si el nombre de parámetro aún no existe en el flujo de datos y pulsa Intro, Data Integration muestra el panel Agregar parámetro de flujo de datos. Asimismo, después de introducir el nombre del parámetro, seleccione Agregar parámetro de flujo de datos en el menú Más acciones.En el panel Agregar Parámetro de Flujo de Datos, especifique el tipo de datos, el valor por defecto y otras propiedades del parámetro que desea agregar y utilizar.
Operador de origen
Utilice el operador de origen para especificar las entidades de datos que sirven como entrada para el flujo de datos.
Puede agregar varios operadores de origen en un flujo de datos.
Si está utilizando una entidad de datos jerárquica para un operador de origen, consulte Tipos de datos jerárquicos para saber lo que está soportado. Es posible que no pueda realizar algunas configuraciones en el separador Atributos o el separador Datos del panel Propiedades.
Al configurar OCI Object Storage como origen de datos, puede utilizar una expresión regular para especificar un patrón de archivo y seleccionar una o más entidades de datos.
Un patrón de archivo es una regla para buscar archivos que coincidan con un directorio y un nombre de archivo y sobre cómo manejar los archivos coincidentes cuando se encuentran.
Sintaxis para utilizar
Data Integration soporta la sintaxis de patrón glob para especificar un patrón de archivo.
- Un asterisco,
*
, coincide con cualquier número de caracteres (incluso ninguno). - Dos asteriscos,
**
, funcionan de la misma forma que*
, pero cruzan los límites del directorio para que coincidan con las rutas completas. - Un signo de interrogación,
?
, coincide exactamente con un carácter. - Las llaves especifican una recopilación de subpatrones. Por ejemplo:
{sun,moon,stars}
coincide con "sun", "moon" o "stars".{temp*,tmp*}
coincide con todas las cadenas que empiezan por "temp" o "tmp".
- Los corchetes indican un juego de caracteres únicos o, cuando se utiliza el carácter de guion (
-
), un rango de caracteres. Por ejemplo:[aeiou]
coincide con cualquier vocal en minúscula.[0-9]
coincide con cualquier dígito.[A-Z]
coincide con cualquier letra en mayúscula.[a-z,A-Z]
coincide con cualquier letra en mayúscula o en minúscula.
Entre corchetes,
*
,?
y\
coinciden consigo mismos. - Todos los demás caracteres coinciden consigo mismos.
- Para coincidir con
*
,?
u otros caracteres especiales, puede utilizar la barra invertida como carácter de escape,\
. Por ejemplo:\\
coincide con una sola barra invertida y\?
coincide con el signo de interrogación.
Ejemplos
*.html | Coincide con todas las cadenas que terminan en .html |
??? | Coincide con todas las cadenas que tienen exactamente tres letras o dígitos |
*[0-9]* | Coincide con todas las cadenas que contienen un valor numérico |
*.{htm,html,pdf} | Coincide con cualquier cadena que termina en .htm , .html o .pdf |
a?*.java | Coincide con cualquier cadena que empieza por a , seguida por al menos una letra o un dígito y que termina en .java |
{foo*,*[0-9]*} | Coincide con cualquier cadena que empieza por foo o cualquier cadena que contiene un valor numérico |
directory1/20200209/part-*[0-9]*json | Coincide con todos los archivos de la carpeta en los que el nombre de archivo empieza por part- y tiene cualquier número de números de 0-9 y termina en json |
directory3/**.csv | Coincide con todos los archivos con la extensión csv que están en la carpeta directory3 y sus subcarpetas |
directory3/*.csv | Coincide con todos los archivos con la extensión csv que solo están en la carpeta principal directory3 . No se incluyen los archivos de las subcarpetas. |
Puede probar la expresión para asegurarse de que el patrón que desea utilizar recupere los archivos de Object Storage para una o más entidades de datos.
-
En el panel Seleccionar Entidad de Datos, seleccione Examinar por patrón.
-
En el panel Explorar entidades de datos por patrón, seleccione Patrón de prueba en el menú Más acciones.
-
En el panel Patrón de prueba, en el campo Patrón de búsqueda, introduzca una expresión de patrón que desee probar antes de utilizar.
Por ejemplo, introduzca
department1/2020/*.json
para buscar todos los archivos con la extensión.json
que están en el directoriodepartment1/2020
. Puede utilizar la sintaxis del parámetro${}
en el campo Patrón de búsqueda. -
Para probar el patrón de búsqueda, en el bloque Probar Nombres de Archivo, proporcione un nombre de archivo o varios nombres de archivo delimitados por una nueva línea. Por ejemplo, para el patrón
BANK_C*/*
, los nombres de archivo pueden ser:BANK_CITY/part-00002-0aaf87d57fbc-c000.csv BANK_COUNTRY/part-00000-a66df3ab02fd-c000.csv
-
Seleccione Patrón de prueba.
Verifique que los nombres de los archivos de prueba se devuelvan en el bloque Nombre de archivo resultante.
-
Seleccione Usar patrón para agregar la expresión del patrón al panel Examinar entidades de datos por patrón.
Volverá al panel Examinar entidades de datos por patrón. Los archivos que coinciden con la expresión de patrón se muestran en la tabla.
-
Haga clic en Seleccionar patrón.
Volverá al panel Seleccionar entidad de datos. La expresión de patrón se muestra junto a Entidad de datos.
Cuando se utiliza una expresión de patrón, se asume que todos los archivos que coinciden con el patrón tienen la misma estructura. Los archivos coincidentes se tratan como una única entidad en el flujo de datos. También se procesarán los archivos nuevos futuros que coincidan con el patrón.
La carga incremental solo carga datos nuevos o actualizados de un origen en un destino. En Data Integration, al configurar BICC Oracle Fusion Applications como datos de origen, puede utilizar la estrategia de extracción incremental gestionada para realizar una carga incremental.
Cuando elige usar la estrategia de extracción incremental, solo los registros nuevos o actualizados del origen se extraen en función de una fecha de última extracción. Data Integration proporciona dos opciones de fecha de última extracción:
-
Personalizado: proporciona una fecha de última extracción para cada ejecución de tarea.
-
Gestionado: Data Integration gestiona la fecha mediante el seguimiento del registro de hora de ejecución de la tarea y el almacenamiento de la última fecha de carga correcta como marca de agua en ejecuciones consecutivas.
Con la opción de fecha de última extracción gestionada por Data Integration, no es necesario especificar explícitamente una fecha para una ejecución de tarea. Sin embargo, puede sustituir la fecha en tiempo de ejecución.
Ejecuciones de tareas iniciadas por un programa de tarea
Data Integration realiza un seguimiento de una ejecución de tarea independientemente de una ejecución de tarea iniciada por un programa de tarea. Por lo tanto, si utiliza la opción de fecha de última extracción gestionada y también configura un programa de tarea, Data Integration realiza un seguimiento automático del último registro de hora de ejecución de tarea correcta de las ejecuciones programadas de tarea por separado del último registro de hora de ejecución de tarea correcta de las ejecuciones de tarea que no se inician mediante un programa de tarea. Esto significa que la última fecha que se gestiona dentro de un programa de tarea o la última fecha que se gestiona dentro de una tarea no se modifica en la otra operación de ejecución.
Carga incremental para diferentes entidades de datos en un flujo de datos
Supongamos que desea configurar la carga incremental en diferentes entidades de datos de un flujo de datos. Para ello, utilice parámetros y cree un programa de tareas para cada entidad de datos. Los pasos generales son los siguientes:
- En el flujo de datos, asigne parámetros para el esquema de origen (oferta BICC) y la entidad de datos (OV de BICC).
- Cree y publique una tarea de integración para el flujo de datos con parámetros.
- Cree un programa de tarea para la tarea de integración. En la página Configurar parámetros, especifique los valores de esquema y entidad de datos para el programa de tarea.
- Cree otro programa de tarea para la misma tarea de integración. En la página Configurar parámetros, defina los valores de esquema y entidad de datos para este programa de tarea.
Carga incremental varias veces en un día
Para realizar una carga incremental más de una vez al día, agregue un operador de filtro inmediatamente después del operador de origen BICC en el flujo de datos. A continuación, cree una expresión de condición para filtrar los datos que ya se han procesado. Por ejemplo, si la columna last_update_date del objeto de vista de BICC es LastUpdateDateField
, la expresión puede ser la siguiente:
FILTER_1.MYSOURCE_1.LastUpdateDateField > ${SYS.LAST_LOAD_DATE}
Operador de destino
Utilice el operador de destino para especificar las entidades de datos que sirven como salida para almacenar los datos transformados.
Puede agregar varios operadores de destino a un flujo de datos. Cada destino solo puede tener un puerto de entrada.
Si está utilizando una entidad de datos jerárquica para un operador de destino, consulte Tipos de datos jerárquicos para saber lo que está soportado. Es posible que no pueda realizar algunas configuraciones en los separadores Atributos, Asignación y Datos del panel Propiedades.
El separador Datos muestra los datos transformados según los operadores aplicados en el flujo de datos.
Si está utilizando una entidad de datos jerárquica para un operador de destino, consulte Tipos de datos jerárquicos para saber lo que está soportado.
Puede filtrar datos en la entidad de destino por un patrón de nombre o tipo de datos. Para filtrar datos por un patrón de nombre, introduzca un patrón de expresión regular simple o los comodines ? y * en el campo Filtrar por patrón. Para filtrar datos por un tipo, seleccione el tipo de datos en el menú situado junto al campo de patrón.
No se pueden aplicar transformaciones al operador de destino porque los datos son de solo lectura.
El separador Asignación solo está disponible para un operador de destino.
Si está utilizando una entidad de datos jerárquica para un operador de destino, consulte Tipos de datos jerárquicos para saber lo que está soportado.
Al crear una nueva entidad de datos de destino, el separador Asignación no está disponible. Los atributos de entrada se usan para crear la estructura de tabla o de archivos con una asignación de 1 a 1.
Al utilizar una entidad de datos de destino existente, asigne los atributos de entrada a los atributos de la entidad de datos de destino. Las acciones que puede realizar son:
Asigna atributos de entrada a atributos de entidad de destino según su posición en las listas.
En el menú Acciones, seleccione Asignación automática por posición. Se agrega la regla de asignación automática por posición.
Asigna atributos de entrada a los atributos de destino con el mismo nombre.
En el menú Acciones, seleccione Asignación automática por nombre. Se agrega la regla de asignación automática por nombre.
Asigna atributos de entrada a atributos de destino en función de reglas de expresión regular simples definidas por el usuario.
En el menú Acciones, seleccione Asignar por patrón. Introduzca un patrón de origen y un patrón de destino. A continuación, seleccione la asignación de vista previa para probar los patrones de origen y destino.
Para definir un patrón, puede utilizar los símbolos asterisco (*) y signo de interrogación (?) Utilice un asterisco para indicar un comodín de cualquier número de caracteres en un patrón de cadena. Utilice un signo de interrogación para indicar un comodín de un solo carácter. Por ejemplo, *INPUT?
asigna cualquier atributo coincidente que empiece por el número n de caracteres que contengan la cadena INPUT
seguido de un único carácter, como NEWINPUTS
.
Por defecto, la coincidencia de patrones no distingue entre mayúsculas y minúsculas. Por ejemplo, el patrón de origen *Name
coincide con el nombre de destino CUSTOMER_NAME
y Customer_Name
.
Para indicar diferentes grupos de captura, utilice $n
. Por ejemplo, supongamos que desea asignar LAST_NAME
, FIRST_NAME
y USERNAME
de un operador de origen o ascendente a TGT_LAST_NAME
, TGT_FIRST_NAME
y TGT_USERNAME
en la entidad de datos de destino. Debe introducir *NAME
en el campo Patrón de origen y TGT_$1
en el campo Patrón de destino. El asterisco (*) en *NAME
significa que la cadena de caracteres antes de NAME
va a ser idéntica a la cadena de caracteres encontrada en $1
del patrón de destino. $1
hace referencia al primer grupo de captura en el patrón de origen, que en este caso es el asterisco (*.
En los casos en los que necesite una coincidencia de patrones sensible a mayúsculas/minúsculas, agregue el prefijo (?c)
al patrón de origen. Por ejemplo, supongamos que desea asignar el atributo de origen CustomerName
, que utiliza letras mayúsculas y minúsculas de camello en su nombre, al atributo de destino con el nombre Customer_Name
. Debe introducir (?c)([A-Z][a-z]+)([A-Z][a-z]+)
como patrón de origen y $1_$2
como patrón de destino. Cuando se agrega el prefijo (?c)
al principio de un patrón de origen, la coincidencia de patrones sensibles a mayúsculas/minúsculas se activa para la asignación. Data Integration detecta que la "N" en CustomerName
es el inicio de un nuevo patrón y, por lo tanto, trata ([A-Z][a-z]+)([A-Z][a-z]+)
como dos palabras diferentes (grupos de captura) al realizar la coincidencia.
Arrastre un atributo entrante de la lista de origen a un atributo de la lista de destino para crear una asignación.
Asimismo, puede seleccionar Asignación manual en el menú Acciones. A continuación, utilice el cuadro de diálogo Asignar atributo para crear una asignación seleccionando un atributo de origen y un atributo de destino.
Elimina la asignación seleccionada.
Seleccione Ver reglas. En el panel Reglas, seleccione una o varias reglas y seleccione Eliminar. También puede seleccionar Eliminar en el menú Acciones de la regla () para borrar esa regla.
Elimina todas las asignaciones.
En el menú Acciones, seleccione Restablecer asignaciones. Se eliminan todas las reglas de asignación manual y automática.
Operadores de conformación
Para los tipos de datos complejos, consulte Tipos de datos jerárquicos para saber lo que está soportado. Es posible que no pueda realizar algunas configuraciones en el separador Atributos y el separador Datos del panel Propiedades.
Operador de filtro
Utilice el operador de filtro para seleccionar un subjuego de datos del puerto de entrada para continuar en sentido descendente hasta el puerto de salida en función de una condición de filtro.
Utilice el Creador de condiciones para seleccionar visualmente elementos para crear una condición de filtro. También puede introducir manualmente una condición de filtro en el editor.
La creación de una condición de filtro permite seleccionar un subjuego de datos de un operador ascendente en función de la condición.
Los elementos que puede utilizar en una condición de filtro incluyen atributos, parámetros y funciones de entrada. Puede arrastrar o hacer doble clic en un elemento de la lista para agregarlo al editor a fin de crear una condición. Puede validar la condición antes de crearla.
De entrada muestra los atributos del operador ascendente que se transfieren a este operador de filtro.
Por ejemplo, para filtrar datos por nombre de ciudad, puede crear la expresión de condición del siguiente modo:
FILTER_1.ADDRESSES.CITY='Redwood Shores'
Los parámetros son los parámetros de expresión que se han agregado al flujo de datos mediante el Creador de condiciones (operadores de filtro, unión, consulta y división) o el Creador de expresiones (operadores de expresión y agregación). Un parámetro de expresión tiene un nombre, un tipo y un valor por defecto. Consulte Adición de un parámetro de expresión.
Supongamos que desea utilizar un parámetro para el nombre de ciudad en la condición de filtro. Puede crear un parámetro VARCHAR
con el nombre P_VARCHAR_CITY
y definir el valor por defecto en Redwood Shores
. A continuación, puede crear la expresión de filtro del siguiente modo:
FILTER_1.ADDRESSES.CITY=$P_VARCHAR_CITY
Las funciones son las funciones disponibles en Data Integration que puede utilizar en una condición. Las funciones son operaciones realizadas en argumentos transferidos a la función. Las funciones calculan, manipulan o extraen valores de datos de los argumentos.
Por ejemplo, para filtrar datos por un nombre de ciudad o por población, puede utilizar la función OR
para crear la expresión de condición de filtro del siguiente modo:
FILTER_1.COUNTRIES.CITY=$P_VARCHAR_CITY OR FILTER_1.COUNTRIES.POPULATION>100000000
FILTER_1.COUNTRIES.CITY=$P_VARCHAR_CITY OR FILTER_1.COUNTRIES.POPULATION>$P_NUMERIC
A continuación se muestra una lista de funciones que están disponibles para su agregación al crear condiciones:
Función | Descripción | Ejemplo |
---|---|---|
MD5(all data types) | Calcula un total de control MD5 del tipo de dato y devuelve un valor de cadena. | MD5(column_name) |
SHA1(all data types) | Calcula un valor hash SHA-1 del tipo de dato y devuelve un valor de cadena. | SHA1(column_name) |
SHA2(all data types, bitLength) | Calcula un valor hash SHA-2 del tipo de dato y devuelve un valor de cadena. bitLength es un entero. | SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512) . |
ORA_HASH(expr, [max_bucket], [seed_value]) |
Calcula un valor hash para
Oracle aplica la función hash a la combinación de |
|
Función | Descripción | Ejemplo |
---|---|---|
ABS(numeric) | Devuelve la potencia absoluta del valor numeric . | ABS(-1) |
CEIL(numeric) | Devuelve el entero más pequeño que no sea mayor que el valor numeric | CEIL(-1,2) |
FLOOR(numeric) | Devuelve el entero más grande que no sea mayor que el valor numeric | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Devuelve el resto después de dividir numeric1 por numeric2 . | MOD(8,2) |
POWER(numeric1, numeric2) | Eleva numeric1 a la potencia numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Devuelve numeric1 redondeado a numeric2 posiciones decimales. | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Devuelve numeric1 truncado a numeric2 posiciones decimales. | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Convierte una expr a un número, según el valor de format y de locale opcional proporcionados. La configuración regional por defecto es en-US . Etiquetas de idioma soportadas.Patrones de formato soportados:
|
|
Función | Descripción | Ejemplo |
---|---|---|
CURRENT_DATE |
Devuelve la fecha actual. | CURRENT_DATE devuelve la fecha de hoy, como 2023-05-26 |
CURRENT_TIMESTAMP |
Devuelve la hora y la fecha actuales de la zona horaria de la sesión. | CURRENT_TIMESTAMP devuelve la fecha actual y la hora actual, como 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Devuelve la fecha que es el valor number especificado de los días posteriores al valor date especificado. |
DATE_ADD('2017-07-30', 1) devuelve 2017-07-31 |
DATE_FORMAT(expr, format[, locale]) |
Aplica un formato Patrones de formato de fecha soportados:
|
|
DAYOFMONTH(date) |
Devuelve el día del mes de la fecha. | DAYOFMONTH('2020-12-25') devuelve 25 |
DAYOFWEEK(date) |
Devuelve el día de la semana de la fecha. | DAYOFWEEK('2020-12-25') devuelve 6 para Friday. En los Estados Unidos, el domingo se considera 1, el lunes es 2, y así sucesivamente. |
DAYOFYEAR(date) |
Devuelve el día del año de la fecha. | DAYOFYEAR('2020-12-25') devuelve 360 |
WEEKOFYEAR(date) |
Devuelve la semana del año de la fecha. |
|
HOUR(datetime) |
Devuelve el valor de hora de la fecha y hora. | HOUR('2020-12-25 15:10:30') devuelve 15 |
LAST_DAY(date) |
Devuelve el último día del mes de la fecha. | LAST_DAY('2020-12-25') devuelve 31 |
MINUTE(datetime) |
Devuelve el valor de minutos de la fecha y hora. | HOUR('2020-12-25 15:10:30') devuelve 10 |
MONTH(date) |
Devuelve el valor de mes de la fecha. | MONTH('2020-06-25') devuelve 6 |
QUARTER(date) |
Devuelve el trimestre del año en el que se encuentra la fecha. | QUARTER('2020-12-25') devuelve 4 |
SECOND(datetime) |
Devuelve el segundo valor de la fecha y hora. | SECOND('2020-12-25 15:10:30') devuelve 30 |
TO_DATE(string, format_string[, localeStr]) |
Analiza la expresión de cadena con la expresión format_string en una fecha. La configuración regional es opcional. El valor por defecto es en-US . Etiquetas de idioma soportadas.En las expresiones de pipeline,
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Convierte una expr de VARCHAR a un valor de TIMESTAMP, según el valor de format_string y de localeStr opcional proporcionados.En las expresiones de pipeline,
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') devuelve un objeto TIMESTAMP que representa 11am 10:10 Oct 11th, 2020 |
WEEK(date) |
Devuelve el valor de semana de la fecha. |
WEEK('2020-06-25') devuelve 4 |
YEAR(date) |
Devuelve el valor de año de la fecha. | YEAR('2020-06-25') devuelve 2020 |
ADD_MONTHS(date_expr, number_months) |
Devuelve la fecha después de agregar el número de meses especificado a la fecha, registro de hora o cadena especificados con un formato como yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Devuelve el número de meses entre Se devuelve un número entero si ambas fechas son el mismo día del mes o ambas son el último día de sus meses respectivos. De lo contrario, la diferencia se calcula en función de 31 días al mes. |
|
FROM_UTC_TIMESTAMP(time_stamp, time_zone) |
Interpreta una fecha, un registro de hora o una cadena como hora UTC y la convierte en un registro de hora en la zona horaria especificada. Para la cadena, utilice un formato como: El formato de zona horaria es un ID de zona basado en región (por ejemplo, 'área/ciudad' como 'Asia/Seúl' o un desfase de zona horaria (por ejemplo, UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') devuelve 2017-07-14 03:40:00.0 |
TO_UTC_TIMESTAMP(time_stamp, time_zone) |
Convierte una fecha, un registro de hora o una cadena en la zona horaria especificada en un registro de hora UTC. Para la cadena, utilice un formato como: El formato de zona horaria es un ID de zona basado en región (por ejemplo, 'área/ciudad' como 'Asia/Seúl') o un desfase de zona horaria (por ejemplo, UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') devuelve 2017-07-14 01:40:00.0
|
FROM_UNIXTIME(unix_time[, fmt]) |
Convierte la hora o época de Unix especificada en una cadena que representa el registro de hora de ese momento en la zona horaria del sistema actual y en el formato especificado. Nota: La hora de Unix es el número de segundos transcurridos desde el 1 de enero de 1970 00:00:00 UTC. Si se omite |
La zona horaria por defecto es PST en los ejemplos |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Convierte la hora actual o especificada en un registro de hora de Unix en segundos.
Si no se proporciona Si |
La zona horaria por defecto es PST en este ejemplo |
INTERVAL 'year' YEAR[(year_precision)] |
Devuelve un período de tiempo en años. year_precision es el número de dígitos del campo year; está comprendido entre 0 y 9. Si se suprime year_precision, el valor por defecto es 2 (debe ser inferior a 100 años). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Devuelve un período de tiempo en años y meses. Se utiliza para almacenar un período de tiempo utilizando los campos year y month. year_precision es el número de dígitos del campo year; está comprendido entre 0 y 9. Si se suprime year_precision, el valor por defecto es 2 (debe ser inferior a 100 años). |
INTERVAL '100-5' YEAR(3) TO MONTH devuelve un intervalo de 100 años, 5 meses. Debe especificar una precisión de año inicial 3. |
INTERVAL 'month' MONTH[(month_precision)] |
Devuelve un período de tiempo en meses. month_precision es el número de dígitos del campo mes; está comprendido entre 0 y 9. Si se suprime month_precision, el valor por defecto es 2 (debe ser inferior a 100 años). |
INTERVAL '200' MONTH(3) devuelve un intervalo de 200 meses. Debe especificar una precisión de mes 3. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en días, horas, minutos y segundos. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. fractional_seconds_precision es el número de dígitos de la parte fraccional del valor second del campo time; está comprendido entre 0 y 9. |
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) devuelve un intervalo de 11 días, 10 horas, 09 minutos, 08 segundos y 555 milésimas de segundo |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Devuelve un período de tiempo en días, horas y minutos. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '11 10:09' DAY TO MINUTE devuelve un intervalo de 11 días, 10 horas y 09 minutos |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Devuelve un período de tiempo en días y horas. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '100 10' DAY(3) TO HOUR devuelve un intervalo de 100 días y 10 horas |
INTERVAL 'day' DAY[(day_precision)] |
Devuelve un período de tiempo en días. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. |
INTERVAL '999' DAY(3) devuelve un intervalo de 999 días |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en días, horas, minutos y segundos. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. fractional_seconds_precision es el número de dígitos de la parte fraccional del valor second del campo time; está comprendido entre 0 y 9. |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) devuelve un intervalo de 9 horas, 08 minutos y 76 666 666 segundos |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Devuelve un período de tiempo en horas y minutos. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '09:30' HOUR TO MINUTE devuelve un intervalo de 9 horas y 30 minutos |
INTERVAL 'hour' HOUR[(hour_precision)] |
Devuelve un período de tiempo en horas. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '40' HOUR devuelve un intervalo de 40 horas |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Devuelve un período de tiempo en minutos. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '15' MINUTE devuelve un intervalo de 15 minutos |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en minutos y segundos. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. fractional_seconds_precision es el número de dígitos de la parte fraccional del valor second del campo time; está comprendido entre 0 y 9. |
INTERVAL '15:30' MINUTE TO SECOND devuelve un intervalo de 15 minutos y 30 segundos |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en segundos. fractional_seconds_precision es el número de dígitos en la parte fraccional del campo second; oscila entre 0 y 9. El valor por defecto es 3. |
INTERVAL '15.678' SECOND devuelve un intervalo de 15 678 segundos |
Función | Descripción | Ejemplo |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Devuelve el valor evaluado en la fila que es la primera fila del marco de ventana. | FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) devuelve el primer valor de BANK_ID en una ventana en la que las filas se calculan como la fila actual y 1 fila después de esa fila, particionada por BANK_ID y en orden ascendente por BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Devuelve el valor evaluado en la fila en un desplazamiento determinado antes de la fila actual dentro de la partición. Si no existe dicha fila, se devuelve el valor por defecto. Tanto el desplazamiento como el valor por defecto se evalúan con respecto a la fila actual. Si se omite, el desplazamiento se define por defecto en 1 y por defecto en NULL. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) devuelve el valor de BANK_ID de la segunda fila antes de la fila actual, particionado por BANK_ID y en orden descendente por BANK_NAME . Si no existe dicho valor, se devuelve hello . |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Devuelve el valor evaluado en la fila que es la última fila del marco de ventana. | LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) devuelve el último valor de BANK_ID en una ventana en la que las filas se calculan como la fila actual y 1 fila después de esa fila, particionado por BANK_ID y en orden ascendente por BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Devuelve el valor evaluado en la fila en un desplazamiento determinado después de la fila actual dentro de la partición. Si no existe dicha fila, se devuelve el valor por defecto. Tanto el desplazamiento como el valor por defecto se evalúan con respecto a la fila actual. Si se omite, el desplazamiento se define por defecto en 1 y por defecto en NULL. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) devuelve el valor de BANK_ID de la segunda fila después de la fila actual, particionado por BANK_ID y en orden ascendente por BANK_NAME . Si no existe dicho valor, se devuelve hello . |
RANK() OVER([ partition_clause ] order_by_clause) |
Devuelve el rango de la fila actual con intervalos, contando desde 1. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) devuelve el rango de cada fila dentro del grupo de partición BANK_ID , en orden ascendente por BANK_NAME . |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Devuelve el número único de la fila actual dentro de su partición, contando desde 1. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) devuelve el número de fila único de cada fila dentro del grupo de partición BANK_ID , en orden ascendente por BANK_NAME . |
Funciones | Descripción | Ejemplo |
---|---|---|
CAST(value AS type) | Devuelve el valor especificado en el tipo especificado. | CAST("10" AS INT) devuelve 10 |
CONCAT(string, string) | Devuelve los valores combinados de cadenas o columnas. | CONCAT('Oracle','SQL') devuelve OracleSQL |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Devuelve los valores combinados de cadenas o columnas utilizando el separador especificado entre las cadenas o columnas. Se necesita un separador y debe ser una cadena. Se debe proporcionar al menos una expresión después del separador. Por ejemplo: |
CONCAT_WS('-', 'Hello', 'Oracle') devuelve Hello-Oracle
Si un secundario de la función es una matriz, la matriz se simplifica:
|
INITCAP(string) | Devuelve la cadena con la primera letra de cada palabra en mayúsculas, mientras que el resto de letras están en minúsculas, y cada palabra está delimitada por un espacio en blanco. | INITCAP('oRACLE sql') devuelve Oracle Sql |
INSTR(string, substring[start_position]) | Devuelve el índice (basado en 1) de la primera ocurrencia de substring en string . | INSTR('OracleSQL', 'SQL') devuelve 7 |
LOWER(string) | Devuelve la cadena con todas las letras cambiadas a minúsculas. | LOWER('ORACLE') devuelve oracle |
LENGTH(string) | Devuelve la longitud de caracteres de la cadena o el número de bytes de datos binarios. La longitud de la cadena incluye los espacios finales. | LENGTH('Oracle') devuelve 6 |
LTRIM(string) | Devuelve la cadena con los espacios iniciales eliminados de la izquierda. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Devuelve el argumento que no es nulo. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Busca y extrae la cadena que coincide con un patrón de expresión regular de la cadena de entrada. Si se ha proporcionado el índice de grupo de captura opcional, la función extrae el grupo específico. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) devuelve 22 |
REPLACE(string, search, replacement) | Sustituye todas las ocurrencias de search por replacement .Si no se encuentra Si no se especifica | REPLACE('ABCabc', 'abc', 'DEF') devuelve ABCDEF |
RTRIM(string) | Devuelve la cadena con los espacios iniciales eliminados de la derecha. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Devuelve la subcadena que empieza en la posición. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) devuelve rac |
Para números, TO_CHAR(expr) y para fechas TO_CHAR(expr, format[, locale]) | Convierte números y fechas en cadenas. Para los números, no es necesario ningún formato. Para las fechas, utilice el mismo formato que DATE_FORMAT descrito en Funciones de fecha y hora. La configuración regional por defecto es en-US . Consulte las etiquetas de idioma soportadas.En las expresiones de pipeline,
| Ejemplo de número: Ejemplo de fecha: |
UPPER(string) | Devuelve una cadena con todas las letras cambiadas a mayúsculas. | UPPER('oracle') devuelve ORACLE |
LPAD(str, len[, pad]) | Devuelve una cadena que está rellena a la izquierda con caracteres especificados a una longitud determinada. Si se deja el carácter pad, el valor por defecto es un espacio. | LPAD('ABC', 5, '*') devuelve '**ABC' |
RPAD(str, len[, pad]) | Devuelve una cadena que está rellenada a la derecha con caracteres especificados a una longitud determinada. Si se deja el carácter pad, el valor por defecto es un espacio. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Función | Descripción | Ejemplo |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Devuelve el valor para el que se cumple una condición. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END devuelve ABC si 1> 0 , de lo contrario, devuelve XYZ |
AND | Operador lógico AND. Devuelve true si ambos operandos son verdaderos; de lo contrario, devuelve false. | (x = 10 AND y = 20) devuelve "true" si x es igual a 10 e y es igual a 20. Si uno de las dos no es verdadero, devuelve "false" |
OR | Operador lógico OR. Devuelve true si cualquiera de los operandos es true o ambos son true; de lo contrario, devuelve false. | (x = 10 OR y = 20) devuelve "false" si x no es igual a 10 y, también, si y no es igual a 20. Si cualquiera de ellos es verdadero, devuelve "true" |
NOT | Operador lógico NOT. | |
LIKE | Realiza una coincidencia de patrones de cadena, si string1 coincide con el patrón de string2. | |
= | Comprueba la igualdad. Devuelve true si expr1 es igual a expr2; de lo contrario, devuelve false. | x = 10 devuelve "true" cuando el valor de x es 10; de lo contrario, devuelve "false" |
!= | Comprueba la desigualdad. Devuelve true si expr1 no es igual a expr2; de lo contrario, devuelve false. | x != 10 devuelve "false" si el valor de x es 10; de lo contrario, devuelve "true" |
> | Comprueba si una expresión es mayor que. Devuelve true si expr1 es mayor que expr2. | x > 10 devuelve "true" si el valor de x es mayor que 10; de lo contrario, devuelve "false" |
>= | Comprueba si una expresión es mayor o igual que. Devuelve true si expr1 es mayor o igual que expr2. | x > =10 devuelve "true" si el valor de x es mayor o igual que 10; de lo contrario, devuelve "false" |
< | Comprueba si una expresión es menor que. Devuelve true si expr1 es menor que expr2. | x < 10 devuelve "true" si el valor de x es menor que 10; de lo contrario, devuelve "false" |
<= | Comprueba si una expresión es menor o igual que. Devuelve true si expr1 es menor o igual que expr2. | x <= 10 devuelve "true" si el valor de x es menor que 10; de lo contrario, devuelve "false" |
|| | Concatena dos cadenas. | 'XYZ' || 'hello' devuelve 'XYZhello' |
BETWEEN | Evalúa un rango. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Prueba si una expresión coincide con una lista de valores. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Función | Descripción | Ejemplo |
---|---|---|
NUMERIC_ID() | Genera un identificador único universal que es un número de 64 bits para cada fila. | NUMERIC_ID() devuelve, por ejemplo, 3458761969522180096 y 3458762008176885761 |
ROWID() | Genera números de 64 bits monótonamente. | ROWID() devuelve, por ejemplo, 0 , 1 , 2 , etc. |
UUID() | Genera un identificador único universal que es una cadena de 128 bits para cada fila. | UUID() devuelve, por ejemplo, 20d45c2f-0d56-4356-8910-162f4f40fb6d |
MONOTONICALLY_INCREASING_ID() |
Genera números enteros únicos que aumentan monótonamente 64 bits que no son números consecutivos. | MONOTONICALLY_INCREASING_ID() returns for example, 8589934592 and 25769803776 |
Función | Descripción | Ejemplo |
---|---|---|
COALESCE(value, value [, value]*) | Devuelve el primer argumento no nulo, si existe; de lo contrario, devuelve null. | COALESCE(NULL, 1, NULL) devuelve 1 |
NULLIF(value, value) | Devuelve null si los dos valores son iguales entre sí; de lo contrario, devuelve el primer valor. | NULLIF('ABC','XYZ') devuelve ABC |
Función | Descripción | Ejemplo |
---|---|---|
SCHEMA_OF_JSON(string) | Analiza una cadena JSON e infiere el esquema en formato DDL. |
|
FROM_JSON(column, string) | Analiza una columna que contiene una cadena JSON en uno de los siguientes tipos, con el esquema especificado.
|
|
TO_JSON(column) | Convierte una columna que contiene un tipo Struct o Array of Structs, o Map o Array of Map en una cadena JSON. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) devuelve una cadena JSON {"s1":[1,2,3],"s2":{"key":"value"}} |
TO_MAP(string,column[,string,column]*) | Crea una nueva columna de tipo Asignación. Las columnas de entrada se deben agrupar como pares clave-valor. Las columnas de clave de entrada no pueden ser nulas y todas deben tener el mismo tipo de datos. Todas las columnas de valor de entrada deben tener el mismo tipo de datos. |
|
TO_STRUCT(string,column[,string,column]*) | Crea una nueva columna de tipo Struct. Las columnas de entrada se deben agrupar como pares clave-valor. |
|
TO_ARRAY(column[,column]*) | Crea una nueva columna como tipo Array. Todas las columnas de entrada deben tener el mismo tipo de datos. |
|
Los operadores de flujo de datos que soportan la creación de expresiones y tipos de dato jerárquicos pueden utilizar funciones de orden superior.
Los operadores soportados son:
-
Agregar
-
Expresión
-
Filtro
-
Entrar
-
Consulta
-
Dividir
-
Girar
Función | Descripción | Ejemplo |
---|---|---|
TRANSFORM(column, lambda_function) | Toma una matriz y una función anónima, y configura una nueva matriz aplicando la función a cada elemento y asignando el resultado a la matriz de salida. | Para una matriz de entrada de enteros [1, 2, 3] , TRANSFORM(array, x -> x + 1) devuelve una nueva matriz de [2, 3, 4] . |
TRANSFORM_KEYS(column, lambda_function) | Toma una asignación y una función con 2 argumentos (clave y valor), y devuelve una asignación en la que las claves tienen el tipo del resultado de la función lambda, y los valores tienen el tipo de los valores de asignación de columna. | Para una asignación de entrada con claves enteras y valores de cadena de {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} , TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) devuelve una nueva asignación de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} . |
TRANSFORM_VALUES(column, lambda_function) | Toma un mapa y una función con 2 argumentos (clave y valor), y devuelve un mapa en el que los valores tienen el tipo del resultado de las funciones lambda, y las claves tienen el tipo de las claves del mapa de columnas. | Para una asignación de entrada con claves de cadena y valores de cadena de {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} , TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) devuelve una nueva asignación de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Solo el operador de expresión soporta Toma una matriz y la ordena según la función dada que toma 2 argumentos. La función debe devolver -1, 0 o 1 en función de si el primer elemento es menor que, igual a o mayor que el segundo elemento. Si se omite la función, la matriz se ordena en orden ascendente. |
La matriz devuelta es: [1,5,6] |
Operador de unión
Utilice el operador de unión para enlazar datos de varios orígenes de entrada.
Utilice el Creador de condiciones para seleccionar visualmente elementos para crear una condición de unión. También puede introducir una condición de unión manualmente en el editor.
La creación de una condición de unión permite seleccionar datos de dos orígenes de entrada en función de la condición.
Los elementos que puede utilizar en una condición de unión incluyen atributos, parámetros y funciones de entrada. Puede arrastrar o hacer doble clic en un elemento de la lista para agregarlo al editor a fin de crear una condición. Puede validar la condición antes de crearla.
De Entrada: Muestra los atributos de los puertos ascendentes conectados al operador de unión como dos carpetas JOIN separadas. Visualice los atributos de cada puerto mediante la ampliación o reducción de la carpeta JOIN adecuada. Por ejemplo, JOIN_1_1 y JOIN_1_2.
JOIN_1_1.BANK_CUSTOMER.ADDRESS_ID = JOIN_1_2.BANK_ADDRESS.ADDRESS_ID
Los parámetros son los parámetros de expresión que se han agregado al flujo de datos mediante el Creador de condiciones (operadores de filtro, unión, consulta y división) o el Creador de expresiones (operadores de expresión y agregación). Un parámetro de expresión tiene un nombre, un tipo y un valor por defecto. Consulte Adición de un parámetro de expresión.
Supongamos que desea unir dos orígenes y mantener solo las filas en las que BANK_NAME='ABC Bank'
. Puede crear un parámetro VARCHAR
con el nombre P_VARCHAR
y definir el valor por defecto en ABC BANK
. A continuación, puede crear la expresión de unión del siguiente modo:
JOIN_1_1.ADDRESSES.BANK_ID = JOIN_1_2.BANK.BANK_ID AND JOIN_1_2.BANK.BANK_NAME = $P_VARCHAR
Las funciones son las funciones disponibles en Data Integration que puede utilizar en una condición. Las funciones son operaciones realizadas en argumentos transferidos a la función. Las funciones calculan, manipulan o extraen valores de datos de los argumentos.
A continuación se muestra una lista de funciones que están disponibles para su agregación al crear condiciones:
Función | Descripción | Ejemplo |
---|---|---|
MD5(all data types) | Calcula un total de control MD5 del tipo de dato y devuelve un valor de cadena. | MD5(column_name) |
SHA1(all data types) | Calcula un valor hash SHA-1 del tipo de dato y devuelve un valor de cadena. | SHA1(column_name) |
SHA2(all data types, bitLength) | Calcula un valor hash SHA-2 del tipo de dato y devuelve un valor de cadena. bitLength es un entero. | SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512) . |
ORA_HASH(expr, [max_bucket], [seed_value]) |
Calcula un valor hash para
Oracle aplica la función hash a la combinación de |
|
Función | Descripción | Ejemplo |
---|---|---|
ABS(numeric) | Devuelve la potencia absoluta del valor numeric . | ABS(-1) |
CEIL(numeric) | Devuelve el entero más pequeño que no sea mayor que el valor numeric | CEIL(-1,2) |
FLOOR(numeric) | Devuelve el entero más grande que no sea mayor que el valor numeric | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Devuelve el resto después de dividir numeric1 por numeric2 . | MOD(8,2) |
POWER(numeric1, numeric2) | Eleva numeric1 a la potencia numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Devuelve numeric1 redondeado a numeric2 posiciones decimales. | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Devuelve numeric1 truncado a numeric2 posiciones decimales. | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Convierte una expr a un número, según el valor de format y de locale opcional proporcionados. La configuración regional por defecto es en-US . Etiquetas de idioma soportadas.Patrones de formato soportados:
|
|
Función | Descripción | Ejemplo |
---|---|---|
CURRENT_DATE |
Devuelve la fecha actual. | CURRENT_DATE devuelve la fecha de hoy, como 2023-05-26 |
CURRENT_TIMESTAMP |
Devuelve la hora y la fecha actuales de la zona horaria de la sesión. | CURRENT_TIMESTAMP devuelve la fecha actual y la hora actual, como 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Devuelve la fecha que es el valor number especificado de los días posteriores al valor date especificado. |
DATE_ADD('2017-07-30', 1) devuelve 2017-07-31 |
DATE_FORMAT(expr, format[, locale]) |
Aplica un formato Patrones de formato de fecha soportados:
|
|
DAYOFMONTH(date) |
Devuelve el día del mes de la fecha. | DAYOFMONTH('2020-12-25') devuelve 25 |
DAYOFWEEK(date) |
Devuelve el día de la semana de la fecha. | DAYOFWEEK('2020-12-25') devuelve 6 para Friday. En los Estados Unidos, el domingo se considera 1, el lunes es 2, y así sucesivamente. |
DAYOFYEAR(date) |
Devuelve el día del año de la fecha. | DAYOFYEAR('2020-12-25') devuelve 360 |
WEEKOFYEAR(date) |
Devuelve la semana del año de la fecha. |
|
HOUR(datetime) |
Devuelve el valor de hora de la fecha y hora. | HOUR('2020-12-25 15:10:30') devuelve 15 |
LAST_DAY(date) |
Devuelve el último día del mes de la fecha. | LAST_DAY('2020-12-25') devuelve 31 |
MINUTE(datetime) |
Devuelve el valor de minutos de la fecha y hora. | HOUR('2020-12-25 15:10:30') devuelve 10 |
MONTH(date) |
Devuelve el valor de mes de la fecha. | MONTH('2020-06-25') devuelve 6 |
QUARTER(date) |
Devuelve el trimestre del año en el que se encuentra la fecha. | QUARTER('2020-12-25') devuelve 4 |
SECOND(datetime) |
Devuelve el segundo valor de la fecha y hora. | SECOND('2020-12-25 15:10:30') devuelve 30 |
TO_DATE(string, format_string[, localeStr]) |
Analiza la expresión de cadena con la expresión format_string en una fecha. La configuración regional es opcional. El valor por defecto es en-US . Etiquetas de idioma soportadas.En las expresiones de pipeline,
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Convierte una expr de VARCHAR a un valor de TIMESTAMP, según el valor de format_string y de localeStr opcional proporcionados.En las expresiones de pipeline,
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') devuelve un objeto TIMESTAMP que representa 11am 10:10 Oct 11th, 2020 |
WEEK(date) |
Devuelve el valor de semana de la fecha. |
WEEK('2020-06-25') devuelve 4 |
YEAR(date) |
Devuelve el valor de año de la fecha. | YEAR('2020-06-25') devuelve 2020 |
ADD_MONTHS(date_expr, number_months) |
Devuelve la fecha después de agregar el número de meses especificado a la fecha, registro de hora o cadena especificados con un formato como yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Devuelve el número de meses entre Se devuelve un número entero si ambas fechas son el mismo día del mes o ambas son el último día de sus meses respectivos. De lo contrario, la diferencia se calcula en función de 31 días al mes. |
|
FROM_UTC_TIMESTAMP(time_stamp, time_zone) |
Interpreta una fecha, un registro de hora o una cadena como hora UTC y la convierte en un registro de hora en la zona horaria especificada. Para la cadena, utilice un formato como: El formato de zona horaria es un ID de zona basado en región (por ejemplo, 'área/ciudad' como 'Asia/Seúl' o un desfase de zona horaria (por ejemplo, UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') devuelve 2017-07-14 03:40:00.0 |
TO_UTC_TIMESTAMP(time_stamp, time_zone) |
Convierte una fecha, un registro de hora o una cadena en la zona horaria especificada en un registro de hora UTC. Para la cadena, utilice un formato como: El formato de zona horaria es un ID de zona basado en región (por ejemplo, 'área/ciudad' como 'Asia/Seúl') o un desfase de zona horaria (por ejemplo, UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') devuelve 2017-07-14 01:40:00.0
|
FROM_UNIXTIME(unix_time[, fmt]) |
Convierte la hora o época de Unix especificada en una cadena que representa el registro de hora de ese momento en la zona horaria del sistema actual y en el formato especificado. Nota: La hora de Unix es el número de segundos transcurridos desde el 1 de enero de 1970 00:00:00 UTC. Si se omite |
La zona horaria por defecto es PST en los ejemplos |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Convierte la hora actual o especificada en un registro de hora de Unix en segundos.
Si no se proporciona Si |
La zona horaria por defecto es PST en este ejemplo |
INTERVAL 'year' YEAR[(year_precision)] |
Devuelve un período de tiempo en años. year_precision es el número de dígitos del campo year; está comprendido entre 0 y 9. Si se suprime year_precision, el valor por defecto es 2 (debe ser inferior a 100 años). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Devuelve un período de tiempo en años y meses. Se utiliza para almacenar un período de tiempo utilizando los campos year y month. year_precision es el número de dígitos del campo year; está comprendido entre 0 y 9. Si se suprime year_precision, el valor por defecto es 2 (debe ser inferior a 100 años). |
INTERVAL '100-5' YEAR(3) TO MONTH devuelve un intervalo de 100 años, 5 meses. Debe especificar una precisión de año inicial 3. |
INTERVAL 'month' MONTH[(month_precision)] |
Devuelve un período de tiempo en meses. month_precision es el número de dígitos del campo mes; está comprendido entre 0 y 9. Si se suprime month_precision, el valor por defecto es 2 (debe ser inferior a 100 años). |
INTERVAL '200' MONTH(3) devuelve un intervalo de 200 meses. Debe especificar una precisión de mes 3. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en días, horas, minutos y segundos. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. fractional_seconds_precision es el número de dígitos de la parte fraccional del valor second del campo time; está comprendido entre 0 y 9. |
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) devuelve un intervalo de 11 días, 10 horas, 09 minutos, 08 segundos y 555 milésimas de segundo |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Devuelve un período de tiempo en días, horas y minutos. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '11 10:09' DAY TO MINUTE devuelve un intervalo de 11 días, 10 horas y 09 minutos |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Devuelve un período de tiempo en días y horas. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '100 10' DAY(3) TO HOUR devuelve un intervalo de 100 días y 10 horas |
INTERVAL 'day' DAY[(day_precision)] |
Devuelve un período de tiempo en días. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. |
INTERVAL '999' DAY(3) devuelve un intervalo de 999 días |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en días, horas, minutos y segundos. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. fractional_seconds_precision es el número de dígitos de la parte fraccional del valor second del campo time; está comprendido entre 0 y 9. |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) devuelve un intervalo de 9 horas, 08 minutos y 76 666 666 segundos |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Devuelve un período de tiempo en horas y minutos. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '09:30' HOUR TO MINUTE devuelve un intervalo de 9 horas y 30 minutos |
INTERVAL 'hour' HOUR[(hour_precision)] |
Devuelve un período de tiempo en horas. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '40' HOUR devuelve un intervalo de 40 horas |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Devuelve un período de tiempo en minutos. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '15' MINUTE devuelve un intervalo de 15 minutos |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en minutos y segundos. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. fractional_seconds_precision es el número de dígitos de la parte fraccional del valor second del campo time; está comprendido entre 0 y 9. |
INTERVAL '15:30' MINUTE TO SECOND devuelve un intervalo de 15 minutos y 30 segundos |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en segundos. fractional_seconds_precision es el número de dígitos en la parte fraccional del campo second; oscila entre 0 y 9. El valor por defecto es 3. |
INTERVAL '15.678' SECOND devuelve un intervalo de 15 678 segundos |
Función | Descripción | Ejemplo |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Devuelve el valor evaluado en la fila que es la primera fila del marco de ventana. | FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) devuelve el primer valor de BANK_ID en una ventana en la que las filas se calculan como la fila actual y 1 fila después de esa fila, particionada por BANK_ID y en orden ascendente por BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Devuelve el valor evaluado en la fila en un desplazamiento determinado antes de la fila actual dentro de la partición. Si no existe dicha fila, se devuelve el valor por defecto. Tanto el desplazamiento como el valor por defecto se evalúan con respecto a la fila actual. Si se omite, el desplazamiento se define por defecto en 1 y por defecto en NULL. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) devuelve el valor de BANK_ID de la segunda fila antes de la fila actual, particionado por BANK_ID y en orden descendente por BANK_NAME . Si no existe dicho valor, se devuelve hello . |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Devuelve el valor evaluado en la fila que es la última fila del marco de ventana. | LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) devuelve el último valor de BANK_ID en una ventana en la que las filas se calculan como la fila actual y 1 fila después de esa fila, particionado por BANK_ID y en orden ascendente por BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Devuelve el valor evaluado en la fila en un desplazamiento determinado después de la fila actual dentro de la partición. Si no existe dicha fila, se devuelve el valor por defecto. Tanto el desplazamiento como el valor por defecto se evalúan con respecto a la fila actual. Si se omite, el desplazamiento se define por defecto en 1 y por defecto en NULL. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) devuelve el valor de BANK_ID de la segunda fila después de la fila actual, particionado por BANK_ID y en orden ascendente por BANK_NAME . Si no existe dicho valor, se devuelve hello . |
RANK() OVER([ partition_clause ] order_by_clause) |
Devuelve el rango de la fila actual con intervalos, contando desde 1. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) devuelve el rango de cada fila dentro del grupo de partición BANK_ID , en orden ascendente por BANK_NAME . |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Devuelve el número único de la fila actual dentro de su partición, contando desde 1. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) devuelve el número de fila único de cada fila dentro del grupo de partición BANK_ID , en orden ascendente por BANK_NAME . |
Funciones | Descripción | Ejemplo |
---|---|---|
CAST(value AS type) | Devuelve el valor especificado en el tipo especificado. | CAST("10" AS INT) devuelve 10 |
CONCAT(string, string) | Devuelve los valores combinados de cadenas o columnas. | CONCAT('Oracle','SQL') devuelve OracleSQL |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Devuelve los valores combinados de cadenas o columnas utilizando el separador especificado entre las cadenas o columnas. Se necesita un separador y debe ser una cadena. Se debe proporcionar al menos una expresión después del separador. Por ejemplo: |
CONCAT_WS('-', 'Hello', 'Oracle') devuelve Hello-Oracle
Si un secundario de la función es una matriz, la matriz se simplifica:
|
INITCAP(string) | Devuelve la cadena con la primera letra de cada palabra en mayúsculas, mientras que el resto de letras están en minúsculas, y cada palabra está delimitada por un espacio en blanco. | INITCAP('oRACLE sql') devuelve Oracle Sql |
INSTR(string, substring[start_position]) | Devuelve el índice (basado en 1) de la primera ocurrencia de substring en string . | INSTR('OracleSQL', 'SQL') devuelve 7 |
LOWER(string) | Devuelve la cadena con todas las letras cambiadas a minúsculas. | LOWER('ORACLE') devuelve oracle |
LENGTH(string) | Devuelve la longitud de caracteres de la cadena o el número de bytes de datos binarios. La longitud de la cadena incluye los espacios finales. | LENGTH('Oracle') devuelve 6 |
LTRIM(string) | Devuelve la cadena con los espacios iniciales eliminados de la izquierda. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Devuelve el argumento que no es nulo. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Busca y extrae la cadena que coincide con un patrón de expresión regular de la cadena de entrada. Si se ha proporcionado el índice de grupo de captura opcional, la función extrae el grupo específico. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) devuelve 22 |
REPLACE(string, search, replacement) | Sustituye todas las ocurrencias de search por replacement .Si no se encuentra Si no se especifica | REPLACE('ABCabc', 'abc', 'DEF') devuelve ABCDEF |
RTRIM(string) | Devuelve la cadena con los espacios iniciales eliminados de la derecha. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Devuelve la subcadena que empieza en la posición. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) devuelve rac |
Para números, TO_CHAR(expr) y para fechas TO_CHAR(expr, format[, locale]) | Convierte números y fechas en cadenas. Para los números, no es necesario ningún formato. Para las fechas, utilice el mismo formato que DATE_FORMAT descrito en Funciones de fecha y hora. La configuración regional por defecto es en-US . Consulte las etiquetas de idioma soportadas.En las expresiones de pipeline,
| Ejemplo de número: Ejemplo de fecha: |
UPPER(string) | Devuelve una cadena con todas las letras cambiadas a mayúsculas. | UPPER('oracle') devuelve ORACLE |
LPAD(str, len[, pad]) | Devuelve una cadena que está rellena a la izquierda con caracteres especificados a una longitud determinada. Si se deja el carácter pad, el valor por defecto es un espacio. | LPAD('ABC', 5, '*') devuelve '**ABC' |
RPAD(str, len[, pad]) | Devuelve una cadena que está rellenada a la derecha con caracteres especificados a una longitud determinada. Si se deja el carácter pad, el valor por defecto es un espacio. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Función | Descripción | Ejemplo |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Devuelve el valor para el que se cumple una condición. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END devuelve ABC si 1> 0 , de lo contrario, devuelve XYZ |
AND | Operador lógico AND. Devuelve true si ambos operandos son verdaderos; de lo contrario, devuelve false. | (x = 10 AND y = 20) devuelve "true" si x es igual a 10 e y es igual a 20. Si uno de las dos no es verdadero, devuelve "false" |
OR | Operador lógico OR. Devuelve true si cualquiera de los operandos es true o ambos son true; de lo contrario, devuelve false. | (x = 10 OR y = 20) devuelve "false" si x no es igual a 10 y, también, si y no es igual a 20. Si cualquiera de ellos es verdadero, devuelve "true" |
NOT | Operador lógico NOT. | |
LIKE | Realiza una coincidencia de patrones de cadena, si string1 coincide con el patrón de string2. | |
= | Comprueba la igualdad. Devuelve true si expr1 es igual a expr2; de lo contrario, devuelve false. | x = 10 devuelve "true" cuando el valor de x es 10; de lo contrario, devuelve "false" |
!= | Comprueba la desigualdad. Devuelve true si expr1 no es igual a expr2; de lo contrario, devuelve false. | x != 10 devuelve "false" si el valor de x es 10; de lo contrario, devuelve "true" |
> | Comprueba si una expresión es mayor que. Devuelve true si expr1 es mayor que expr2. | x > 10 devuelve "true" si el valor de x es mayor que 10; de lo contrario, devuelve "false" |
>= | Comprueba si una expresión es mayor o igual que. Devuelve true si expr1 es mayor o igual que expr2. | x > =10 devuelve "true" si el valor de x es mayor o igual que 10; de lo contrario, devuelve "false" |
< | Comprueba si una expresión es menor que. Devuelve true si expr1 es menor que expr2. | x < 10 devuelve "true" si el valor de x es menor que 10; de lo contrario, devuelve "false" |
<= | Comprueba si una expresión es menor o igual que. Devuelve true si expr1 es menor o igual que expr2. | x <= 10 devuelve "true" si el valor de x es menor que 10; de lo contrario, devuelve "false" |
|| | Concatena dos cadenas. | 'XYZ' || 'hello' devuelve 'XYZhello' |
BETWEEN | Evalúa un rango. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Prueba si una expresión coincide con una lista de valores. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Función | Descripción | Ejemplo |
---|---|---|
NUMERIC_ID() | Genera un identificador único universal que es un número de 64 bits para cada fila. | NUMERIC_ID() devuelve, por ejemplo, 3458761969522180096 y 3458762008176885761 |
ROWID() | Genera números de 64 bits monótonamente. | ROWID() devuelve, por ejemplo, 0 , 1 , 2 , etc. |
UUID() | Genera un identificador único universal que es una cadena de 128 bits para cada fila. | UUID() devuelve, por ejemplo, 20d45c2f-0d56-4356-8910-162f4f40fb6d |
MONOTONICALLY_INCREASING_ID() |
Genera números enteros únicos que aumentan monótonamente 64 bits que no son números consecutivos. | MONOTONICALLY_INCREASING_ID() returns for example, 8589934592 and 25769803776 |
Función | Descripción | Ejemplo |
---|---|---|
COALESCE(value, value [, value]*) | Devuelve el primer argumento no nulo, si existe; de lo contrario, devuelve null. | COALESCE(NULL, 1, NULL) devuelve 1 |
NULLIF(value, value) | Devuelve null si los dos valores son iguales entre sí; de lo contrario, devuelve el primer valor. | NULLIF('ABC','XYZ') devuelve ABC |
Función | Descripción | Ejemplo |
---|---|---|
SCHEMA_OF_JSON(string) | Analiza una cadena JSON e infiere el esquema en formato DDL. |
|
FROM_JSON(column, string) | Analiza una columna que contiene una cadena JSON en uno de los siguientes tipos, con el esquema especificado.
|
|
TO_JSON(column) | Convierte una columna que contiene un tipo Struct o Array of Structs, o Map o Array of Map en una cadena JSON. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) devuelve una cadena JSON {"s1":[1,2,3],"s2":{"key":"value"}} |
TO_MAP(string,column[,string,column]*) | Crea una nueva columna de tipo Asignación. Las columnas de entrada se deben agrupar como pares clave-valor. Las columnas de clave de entrada no pueden ser nulas y todas deben tener el mismo tipo de datos. Todas las columnas de valor de entrada deben tener el mismo tipo de datos. |
|
TO_STRUCT(string,column[,string,column]*) | Crea una nueva columna de tipo Struct. Las columnas de entrada se deben agrupar como pares clave-valor. |
|
TO_ARRAY(column[,column]*) | Crea una nueva columna como tipo Array. Todas las columnas de entrada deben tener el mismo tipo de datos. |
|
Los operadores de flujo de datos que soportan la creación de expresiones y tipos de dato jerárquicos pueden utilizar funciones de orden superior.
Los operadores soportados son:
-
Agregar
-
Expresión
-
Filtro
-
Entrar
-
Consulta
-
Dividir
-
Girar
Función | Descripción | Ejemplo |
---|---|---|
TRANSFORM(column, lambda_function) | Toma una matriz y una función anónima, y configura una nueva matriz aplicando la función a cada elemento y asignando el resultado a la matriz de salida. | Para una matriz de entrada de enteros [1, 2, 3] , TRANSFORM(array, x -> x + 1) devuelve una nueva matriz de [2, 3, 4] . |
TRANSFORM_KEYS(column, lambda_function) | Toma una asignación y una función con 2 argumentos (clave y valor), y devuelve una asignación en la que las claves tienen el tipo del resultado de la función lambda, y los valores tienen el tipo de los valores de asignación de columna. | Para una asignación de entrada con claves enteras y valores de cadena de {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} , TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) devuelve una nueva asignación de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} . |
TRANSFORM_VALUES(column, lambda_function) | Toma un mapa y una función con 2 argumentos (clave y valor), y devuelve un mapa en el que los valores tienen el tipo del resultado de las funciones lambda, y las claves tienen el tipo de las claves del mapa de columnas. | Para una asignación de entrada con claves de cadena y valores de cadena de {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} , TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) devuelve una nueva asignación de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Solo el operador de expresión soporta Toma una matriz y la ordena según la función dada que toma 2 argumentos. La función debe devolver -1, 0 o 1 en función de si el primer elemento es menor que, igual a o mayor que el segundo elemento. Si se omite la función, la matriz se ordena en orden ascendente. |
La matriz devuelta es: [1,5,6] |
Operador de expresión
Utilice el operador de expresión para realizar una o más transformaciones en una sola fila de datos para crear campos derivados nuevos.
Para utilizar el operador de expresión para cambiar el tipo de dato de un grupo de atributos, consulte Cambio del tipo de dato de un grupo de atributos.
Puede utilizar el operador de expresión para cambiar el tipo de dato de los atributos mediante una acción de transformación masiva.
Utilice el Creador de expresiones para seleccionar visualmente elementos para crear una expresión en el editor. También puede escribir manualmente una expresión usted mismo.
Tenga en cuenta lo siguiente al crear expresiones:
Incluya el literal de cadena entre comillas simples. Por ejemplo:
CONCAT('We ', 'like')
yUPPER('oracle')
.Incluya el nombre de atributo entre comillas dobles. Por ejemplo:
UPPER("Sales")
yCONCAT(CONCAT("EXPRESSION_1.EMP_UTF8_EN_COL_CSV.EN_NAME", ' '), "EXPRESSION_1.EMP_UTF8_EN_COL_CSV.NAME")
.El uso de comillas dobles alrededor de nombres de atributo es obligatorio para caracteres multibyte y nombres que tengan caracteres especiales en el nombre completo.
El panel Add Expression tiene dos secciones: Expression information y Expression builder. Los campos Información de expresión permiten especificar un nombre y un tipo de dato para la expresión. También puede crear la expresión para aplicarla a dos o más atributos. Al trabajar con tipos de datos complejos como Map, Array y Struct que pueden tener niveles de tipos anidados, puede dejar que el creador detecte el tipo de datos de la expresión que introduzca. Al dejar que el creador infiera el tipo de datos, puede obtener una vista previa y refrescar el tipo de datos y validar la expresión.
La sección Creador de expresiones muestra los elementos para crear una expresión. Los elementos que puede utilizar en una expresión incluyen atributos, parámetros y funciones de entrada. Haga clic dos veces o arrastre un elemento de la lista para agregarlo al editor a fin de crear la expresión o escriba manualmente la expresión usted mismo. Puede validar la expresión antes de crearla.
De entrada muestra los atributos del operador ascendente que se transfieren a este operador de expresión. Debajo de la lista de atributos hay una casilla de control que le permite aplicar reglas de exclusión. Para excluir uno o más atributos de entrada de la salida de esta expresión, active la casilla de control Excluir atributos entrantes. A continuación, utilice el menú para agregar los atributos de entrada que desea excluir de la salida. Se aplica una regla de exclusión a cada atributo que seleccione para excluir. Puede excluir atributos solo cuando agrega la expresión la primera vez. Al editar la expresión, la casilla de control Excluir atributos entrantes no está disponible.
Los parámetros incluyen parámetros definidos por el usuario y parámetros generados por el sistema.
Los parámetros definidos por el usuario son los parámetros de expresión que se han agregado al flujo de datos mediante el Creador de condiciones (operadores de filtro, unión, consulta y división) o el Creador de expresiones (operadores de expresión y agregación). Consulte Adición de un parámetro de expresión. La sintaxis es $PARAMETER_NAME
. Por ejemplo: EXPRESSION_1.ADDRESSES.POSTAL_CODE=$P_CODE
Data Integration genera parámetros del sistema, como SYS.TASK_START_TIME
. Los valores de los parámetros del sistema se pueden utilizar en expresiones para registrar la información del sistema. La sintaxis es ${SYSTEM_PARAMETER}
. Por ejemplo: ${SYS.TASK_RUN_NAME}
Las funciones son las funciones disponibles en Data Integration que puede utilizar en una expresión. Las funciones son operaciones realizadas en argumentos transferidos a la función. Las funciones calculan, manipulan o extraen valores de datos de los argumentos. También puede agregar funciones definidas por el usuario que haya creado en el espacio de trabajo. Por ejemplo: MYLIBRARY.MYFUNCTION
La lista de funciones disponibles en Data Integration que puede utilizar es la siguiente:
Función | Descripción | Ejemplo |
---|---|---|
MD5(all data types) | Calcula un total de control MD5 del tipo de dato y devuelve un valor de cadena. | MD5(column_name) |
SHA1(all data types) | Calcula un valor hash SHA-1 del tipo de dato y devuelve un valor de cadena. | SHA1(column_name) |
SHA2(all data types, bitLength) | Calcula un valor hash SHA-2 del tipo de dato y devuelve un valor de cadena. bitLength es un entero. | SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512) . |
ORA_HASH(expr, [max_bucket], [seed_value]) |
Calcula un valor hash para
Oracle aplica la función hash a la combinación de |
|
Función | Descripción | Ejemplo |
---|---|---|
ABS(numeric) | Devuelve la potencia absoluta del valor numeric . | ABS(-1) |
CEIL(numeric) | Devuelve el entero más pequeño que no sea mayor que el valor numeric | CEIL(-1,2) |
FLOOR(numeric) | Devuelve el entero más grande que no sea mayor que el valor numeric | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Devuelve el resto después de dividir numeric1 por numeric2 . | MOD(8,2) |
POWER(numeric1, numeric2) | Eleva numeric1 a la potencia numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Devuelve numeric1 redondeado a numeric2 posiciones decimales. | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Devuelve numeric1 truncado a numeric2 posiciones decimales. | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Convierte una expr a un número, según el valor de format y de locale opcional proporcionados. La configuración regional por defecto es en-US . Etiquetas de idioma soportadas.Patrones de formato soportados:
|
|
Solo el operador Expression soporta funciones de matriz.
Función | Descripción | Ejemplo |
---|---|---|
ARRAY_POSITION(array(...), element) | Devuelve la posición de la primera incidencia del elemento especificado en la matriz determinada. La posición no se basa en cero, sino que comienza con 1. | ARRAY_POSITION(array(3, 2, 1, 4, 1), 1) devuelve 3 |
REVERSE(array(...)) |
Devuelve la matriz dada de elementos en un orden inverso. | REVERSE(array(2, 1, 4, 3)) devuelve [3,4,1,2] |
ELEMENT_AT(array(...), index) |
Devuelve el elemento de la matriz indicada en la posición de índice especificada. El índice no se basa en cero, sino que comienza con 1. Si |
ELEMENT_AT(array(1, 2, 3), 2) devuelve 2 |
Función | Descripción | Ejemplo |
---|---|---|
CURRENT_DATE |
Devuelve la fecha actual. | CURRENT_DATE devuelve la fecha de hoy, como 2023-05-26 |
CURRENT_TIMESTAMP |
Devuelve la hora y la fecha actuales de la zona horaria de la sesión. | CURRENT_TIMESTAMP devuelve la fecha actual y la hora actual, como 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Devuelve la fecha que es el valor number especificado de los días posteriores al valor date especificado. |
DATE_ADD('2017-07-30', 1) devuelve 2017-07-31 |
DATE_FORMAT(expr, format[, locale]) |
Aplica un formato Patrones de formato de fecha soportados:
|
|
DAYOFMONTH(date) |
Devuelve el día del mes de la fecha. | DAYOFMONTH('2020-12-25') devuelve 25 |
DAYOFWEEK(date) |
Devuelve el día de la semana de la fecha. | DAYOFWEEK('2020-12-25') devuelve 6 para Friday. En los Estados Unidos, el domingo se considera 1, el lunes es 2, y así sucesivamente. |
DAYOFYEAR(date) |
Devuelve el día del año de la fecha. | DAYOFYEAR('2020-12-25') devuelve 360 |
WEEKOFYEAR(date) |
Devuelve la semana del año de la fecha. |
|
HOUR(datetime) |
Devuelve el valor de hora de la fecha y hora. | HOUR('2020-12-25 15:10:30') devuelve 15 |
LAST_DAY(date) |
Devuelve el último día del mes de la fecha. | LAST_DAY('2020-12-25') devuelve 31 |
MINUTE(datetime) |
Devuelve el valor de minutos de la fecha y hora. | HOUR('2020-12-25 15:10:30') devuelve 10 |
MONTH(date) |
Devuelve el valor de mes de la fecha. | MONTH('2020-06-25') devuelve 6 |
QUARTER(date) |
Devuelve el trimestre del año en el que se encuentra la fecha. | QUARTER('2020-12-25') devuelve 4 |
SECOND(datetime) |
Devuelve el segundo valor de la fecha y hora. | SECOND('2020-12-25 15:10:30') devuelve 30 |
TO_DATE(string, format_string[, localeStr]) |
Analiza la expresión de cadena con la expresión format_string en una fecha. La configuración regional es opcional. El valor por defecto es en-US . Etiquetas de idioma soportadas.En las expresiones de pipeline,
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Convierte una expr de VARCHAR a un valor de TIMESTAMP, según el valor de format_string y de localeStr opcional proporcionados.En las expresiones de pipeline,
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') devuelve un objeto TIMESTAMP que representa 11am 10:10 Oct 11th, 2020 |
WEEK(date) |
Devuelve el valor de semana de la fecha. |
WEEK('2020-06-25') devuelve 4 |
YEAR(date) |
Devuelve el valor de año de la fecha. | YEAR('2020-06-25') devuelve 2020 |
ADD_MONTHS(date_expr, number_months) |
Devuelve la fecha después de agregar el número de meses especificado a la fecha, registro de hora o cadena especificados con un formato como yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Devuelve el número de meses entre Se devuelve un número entero si ambas fechas son el mismo día del mes o ambas son el último día de sus meses respectivos. De lo contrario, la diferencia se calcula en función de 31 días al mes. |
|
FROM_UTC_TIMESTAMP(time_stamp, time_zone) |
Interpreta una fecha, un registro de hora o una cadena como hora UTC y la convierte en un registro de hora en la zona horaria especificada. Para la cadena, utilice un formato como: El formato de zona horaria es un ID de zona basado en región (por ejemplo, 'área/ciudad' como 'Asia/Seúl' o un desfase de zona horaria (por ejemplo, UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') devuelve 2017-07-14 03:40:00.0 |
TO_UTC_TIMESTAMP(time_stamp, time_zone) |
Convierte una fecha, un registro de hora o una cadena en la zona horaria especificada en un registro de hora UTC. Para la cadena, utilice un formato como: El formato de zona horaria es un ID de zona basado en región (por ejemplo, 'área/ciudad' como 'Asia/Seúl') o un desfase de zona horaria (por ejemplo, UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') devuelve 2017-07-14 01:40:00.0
|
FROM_UNIXTIME(unix_time[, fmt]) |
Convierte la hora o época de Unix especificada en una cadena que representa el registro de hora de ese momento en la zona horaria del sistema actual y en el formato especificado. Nota: La hora de Unix es el número de segundos transcurridos desde el 1 de enero de 1970 00:00:00 UTC. Si se omite |
La zona horaria por defecto es PST en los ejemplos |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Convierte la hora actual o especificada en un registro de hora de Unix en segundos.
Si no se proporciona Si |
La zona horaria por defecto es PST en este ejemplo |
INTERVAL 'year' YEAR[(year_precision)] |
Devuelve un período de tiempo en años. year_precision es el número de dígitos del campo year; está comprendido entre 0 y 9. Si se suprime year_precision, el valor por defecto es 2 (debe ser inferior a 100 años). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Devuelve un período de tiempo en años y meses. Se utiliza para almacenar un período de tiempo utilizando los campos year y month. year_precision es el número de dígitos del campo year; está comprendido entre 0 y 9. Si se suprime year_precision, el valor por defecto es 2 (debe ser inferior a 100 años). |
INTERVAL '100-5' YEAR(3) TO MONTH devuelve un intervalo de 100 años, 5 meses. Debe especificar una precisión de año inicial 3. |
INTERVAL 'month' MONTH[(month_precision)] |
Devuelve un período de tiempo en meses. month_precision es el número de dígitos del campo mes; está comprendido entre 0 y 9. Si se suprime month_precision, el valor por defecto es 2 (debe ser inferior a 100 años). |
INTERVAL '200' MONTH(3) devuelve un intervalo de 200 meses. Debe especificar una precisión de mes 3. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en días, horas, minutos y segundos. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. fractional_seconds_precision es el número de dígitos de la parte fraccional del valor second del campo time; está comprendido entre 0 y 9. |
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) devuelve un intervalo de 11 días, 10 horas, 09 minutos, 08 segundos y 555 milésimas de segundo |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Devuelve un período de tiempo en días, horas y minutos. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '11 10:09' DAY TO MINUTE devuelve un intervalo de 11 días, 10 horas y 09 minutos |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Devuelve un período de tiempo en días y horas. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '100 10' DAY(3) TO HOUR devuelve un intervalo de 100 días y 10 horas |
INTERVAL 'day' DAY[(day_precision)] |
Devuelve un período de tiempo en días. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. |
INTERVAL '999' DAY(3) devuelve un intervalo de 999 días |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en días, horas, minutos y segundos. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. fractional_seconds_precision es el número de dígitos de la parte fraccional del valor second del campo time; está comprendido entre 0 y 9. |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) devuelve un intervalo de 9 horas, 08 minutos y 76 666 666 segundos |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Devuelve un período de tiempo en horas y minutos. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '09:30' HOUR TO MINUTE devuelve un intervalo de 9 horas y 30 minutos |
INTERVAL 'hour' HOUR[(hour_precision)] |
Devuelve un período de tiempo en horas. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '40' HOUR devuelve un intervalo de 40 horas |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Devuelve un período de tiempo en minutos. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '15' MINUTE devuelve un intervalo de 15 minutos |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en minutos y segundos. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. fractional_seconds_precision es el número de dígitos de la parte fraccional del valor second del campo time; está comprendido entre 0 y 9. |
INTERVAL '15:30' MINUTE TO SECOND devuelve un intervalo de 15 minutos y 30 segundos |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en segundos. fractional_seconds_precision es el número de dígitos en la parte fraccional del campo second; oscila entre 0 y 9. El valor por defecto es 3. |
INTERVAL '15.678' SECOND devuelve un intervalo de 15 678 segundos |
Función | Descripción | Ejemplo |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Devuelve el valor evaluado en la fila que es la primera fila del marco de ventana. | FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) devuelve el primer valor de BANK_ID en una ventana en la que las filas se calculan como la fila actual y 1 fila después de esa fila, particionada por BANK_ID y en orden ascendente por BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Devuelve el valor evaluado en la fila en un desplazamiento determinado antes de la fila actual dentro de la partición. Si no existe dicha fila, se devuelve el valor por defecto. Tanto el desplazamiento como el valor por defecto se evalúan con respecto a la fila actual. Si se omite, el desplazamiento se define por defecto en 1 y por defecto en NULL. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) devuelve el valor de BANK_ID de la segunda fila antes de la fila actual, particionado por BANK_ID y en orden descendente por BANK_NAME . Si no existe dicho valor, se devuelve hello . |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Devuelve el valor evaluado en la fila que es la última fila del marco de ventana. | LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) devuelve el último valor de BANK_ID en una ventana en la que las filas se calculan como la fila actual y 1 fila después de esa fila, particionado por BANK_ID y en orden ascendente por BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Devuelve el valor evaluado en la fila en un desplazamiento determinado después de la fila actual dentro de la partición. Si no existe dicha fila, se devuelve el valor por defecto. Tanto el desplazamiento como el valor por defecto se evalúan con respecto a la fila actual. Si se omite, el desplazamiento se define por defecto en 1 y por defecto en NULL. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) devuelve el valor de BANK_ID de la segunda fila después de la fila actual, particionado por BANK_ID y en orden ascendente por BANK_NAME . Si no existe dicho valor, se devuelve hello . |
RANK() OVER([ partition_clause ] order_by_clause) |
Devuelve el rango de la fila actual con intervalos, contando desde 1. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) devuelve el rango de cada fila dentro del grupo de partición BANK_ID , en orden ascendente por BANK_NAME . |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Devuelve el número único de la fila actual dentro de su partición, contando desde 1. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) devuelve el número de fila único de cada fila dentro del grupo de partición BANK_ID , en orden ascendente por BANK_NAME . |
Funciones | Descripción | Ejemplo |
---|---|---|
CAST(value AS type) | Devuelve el valor especificado en el tipo especificado. | CAST("10" AS INT) devuelve 10 |
CONCAT(string, string) | Devuelve los valores combinados de cadenas o columnas. | CONCAT('Oracle','SQL') devuelve OracleSQL |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Devuelve los valores combinados de cadenas o columnas utilizando el separador especificado entre las cadenas o columnas. Se necesita un separador y debe ser una cadena. Se debe proporcionar al menos una expresión después del separador. Por ejemplo: |
CONCAT_WS('-', 'Hello', 'Oracle') devuelve Hello-Oracle
Si un secundario de la función es una matriz, la matriz se simplifica:
|
INITCAP(string) | Devuelve la cadena con la primera letra de cada palabra en mayúsculas, mientras que el resto de letras están en minúsculas, y cada palabra está delimitada por un espacio en blanco. | INITCAP('oRACLE sql') devuelve Oracle Sql |
INSTR(string, substring[start_position]) | Devuelve el índice (basado en 1) de la primera ocurrencia de substring en string . | INSTR('OracleSQL', 'SQL') devuelve 7 |
LOWER(string) | Devuelve la cadena con todas las letras cambiadas a minúsculas. | LOWER('ORACLE') devuelve oracle |
LENGTH(string) | Devuelve la longitud de caracteres de la cadena o el número de bytes de datos binarios. La longitud de la cadena incluye los espacios finales. | LENGTH('Oracle') devuelve 6 |
LTRIM(string) | Devuelve la cadena con los espacios iniciales eliminados de la izquierda. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Devuelve el argumento que no es nulo. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Busca y extrae la cadena que coincide con un patrón de expresión regular de la cadena de entrada. Si se ha proporcionado el índice de grupo de captura opcional, la función extrae el grupo específico. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) devuelve 22 |
REPLACE(string, search, replacement) | Sustituye todas las ocurrencias de search por replacement .Si no se encuentra Si no se especifica | REPLACE('ABCabc', 'abc', 'DEF') devuelve ABCDEF |
RTRIM(string) | Devuelve la cadena con los espacios iniciales eliminados de la derecha. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Devuelve la subcadena que empieza en la posición. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) devuelve rac |
Para números, TO_CHAR(expr) y para fechas TO_CHAR(expr, format[, locale]) | Convierte números y fechas en cadenas. Para los números, no es necesario ningún formato. Para las fechas, utilice el mismo formato que DATE_FORMAT descrito en Funciones de fecha y hora. La configuración regional por defecto es en-US . Consulte las etiquetas de idioma soportadas.En las expresiones de pipeline,
| Ejemplo de número: Ejemplo de fecha: |
UPPER(string) | Devuelve una cadena con todas las letras cambiadas a mayúsculas. | UPPER('oracle') devuelve ORACLE |
LPAD(str, len[, pad]) | Devuelve una cadena que está rellena a la izquierda con caracteres especificados a una longitud determinada. Si se deja el carácter pad, el valor por defecto es un espacio. | LPAD('ABC', 5, '*') devuelve '**ABC' |
RPAD(str, len[, pad]) | Devuelve una cadena que está rellenada a la derecha con caracteres especificados a una longitud determinada. Si se deja el carácter pad, el valor por defecto es un espacio. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Función | Descripción | Ejemplo |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Devuelve el valor para el que se cumple una condición. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END devuelve ABC si 1> 0 , de lo contrario, devuelve XYZ |
AND | Operador lógico AND. Devuelve true si ambos operandos son verdaderos; de lo contrario, devuelve false. | (x = 10 AND y = 20) devuelve "true" si x es igual a 10 e y es igual a 20. Si uno de las dos no es verdadero, devuelve "false" |
OR | Operador lógico OR. Devuelve true si cualquiera de los operandos es true o ambos son true; de lo contrario, devuelve false. | (x = 10 OR y = 20) devuelve "false" si x no es igual a 10 y, también, si y no es igual a 20. Si cualquiera de ellos es verdadero, devuelve "true" |
NOT | Operador lógico NOT. | |
LIKE | Realiza una coincidencia de patrones de cadena, si string1 coincide con el patrón de string2. | |
= | Comprueba la igualdad. Devuelve true si expr1 es igual a expr2; de lo contrario, devuelve false. | x = 10 devuelve "true" cuando el valor de x es 10; de lo contrario, devuelve "false" |
!= | Comprueba la desigualdad. Devuelve true si expr1 no es igual a expr2; de lo contrario, devuelve false. | x != 10 devuelve "false" si el valor de x es 10; de lo contrario, devuelve "true" |
> | Comprueba si una expresión es mayor que. Devuelve true si expr1 es mayor que expr2. | x > 10 devuelve "true" si el valor de x es mayor que 10; de lo contrario, devuelve "false" |
>= | Comprueba si una expresión es mayor o igual que. Devuelve true si expr1 es mayor o igual que expr2. | x > =10 devuelve "true" si el valor de x es mayor o igual que 10; de lo contrario, devuelve "false" |
< | Comprueba si una expresión es menor que. Devuelve true si expr1 es menor que expr2. | x < 10 devuelve "true" si el valor de x es menor que 10; de lo contrario, devuelve "false" |
<= | Comprueba si una expresión es menor o igual que. Devuelve true si expr1 es menor o igual que expr2. | x <= 10 devuelve "true" si el valor de x es menor que 10; de lo contrario, devuelve "false" |
|| | Concatena dos cadenas. | 'XYZ' || 'hello' devuelve 'XYZhello' |
BETWEEN | Evalúa un rango. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Prueba si una expresión coincide con una lista de valores. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Función | Descripción | Ejemplo |
---|---|---|
NUMERIC_ID() | Genera un identificador único universal que es un número de 64 bits para cada fila. | NUMERIC_ID() devuelve, por ejemplo, 3458761969522180096 y 3458762008176885761 |
ROWID() | Genera números de 64 bits monótonamente. | ROWID() devuelve, por ejemplo, 0 , 1 , 2 , etc. |
UUID() | Genera un identificador único universal que es una cadena de 128 bits para cada fila. | UUID() devuelve, por ejemplo, 20d45c2f-0d56-4356-8910-162f4f40fb6d |
MONOTONICALLY_INCREASING_ID() |
Genera números enteros únicos que aumentan monótonamente 64 bits que no son números consecutivos. | MONOTONICALLY_INCREASING_ID() returns for example, 8589934592 and 25769803776 |
Función | Descripción | Ejemplo |
---|---|---|
COALESCE(value, value [, value]*) | Devuelve el primer argumento no nulo, si existe; de lo contrario, devuelve null. | COALESCE(NULL, 1, NULL) devuelve 1 |
NULLIF(value, value) | Devuelve null si los dos valores son iguales entre sí; de lo contrario, devuelve el primer valor. | NULLIF('ABC','XYZ') devuelve ABC |
Función | Descripción | Ejemplo |
---|---|---|
SCHEMA_OF_JSON(string) | Analiza una cadena JSON e infiere el esquema en formato DDL. |
|
FROM_JSON(column, string) | Analiza una columna que contiene una cadena JSON en uno de los siguientes tipos, con el esquema especificado.
|
|
TO_JSON(column) | Convierte una columna que contiene un tipo Struct o Array of Structs, o Map o Array of Map en una cadena JSON. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) devuelve una cadena JSON {"s1":[1,2,3],"s2":{"key":"value"}} |
TO_MAP(string,column[,string,column]*) | Crea una nueva columna de tipo Asignación. Las columnas de entrada se deben agrupar como pares clave-valor. Las columnas de clave de entrada no pueden ser nulas y todas deben tener el mismo tipo de datos. Todas las columnas de valor de entrada deben tener el mismo tipo de datos. |
|
TO_STRUCT(string,column[,string,column]*) | Crea una nueva columna de tipo Struct. Las columnas de entrada se deben agrupar como pares clave-valor. |
|
TO_ARRAY(column[,column]*) | Crea una nueva columna como tipo Array. Todas las columnas de entrada deben tener el mismo tipo de datos. |
|
Los operadores de flujo de datos que soportan la creación de expresiones y tipos de dato jerárquicos pueden utilizar funciones de orden superior.
Los operadores soportados son:
-
Agregar
-
Expresión
-
Filtro
-
Entrar
-
Consulta
-
Dividir
-
Girar
Función | Descripción | Ejemplo |
---|---|---|
TRANSFORM(column, lambda_function) | Toma una matriz y una función anónima, y configura una nueva matriz aplicando la función a cada elemento y asignando el resultado a la matriz de salida. | Para una matriz de entrada de enteros [1, 2, 3] , TRANSFORM(array, x -> x + 1) devuelve una nueva matriz de [2, 3, 4] . |
TRANSFORM_KEYS(column, lambda_function) | Toma una asignación y una función con 2 argumentos (clave y valor), y devuelve una asignación en la que las claves tienen el tipo del resultado de la función lambda, y los valores tienen el tipo de los valores de asignación de columna. | Para una asignación de entrada con claves enteras y valores de cadena de {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} , TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) devuelve una nueva asignación de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} . |
TRANSFORM_VALUES(column, lambda_function) | Toma un mapa y una función con 2 argumentos (clave y valor), y devuelve un mapa en el que los valores tienen el tipo del resultado de las funciones lambda, y las claves tienen el tipo de las claves del mapa de columnas. | Para una asignación de entrada con claves de cadena y valores de cadena de {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} , TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) devuelve una nueva asignación de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Solo el operador de expresión soporta Toma una matriz y la ordena según la función dada que toma 2 argumentos. La función debe devolver -1, 0 o 1 en función de si el primer elemento es menor que, igual a o mayor que el segundo elemento. Si se omite la función, la matriz se ordena en orden ascendente. |
La matriz devuelta es: [1,5,6] |
Puede duplicar expresiones que se hayan agregado a un operador de expresión.
Puede cambiar el orden de las expresiones que se han agregado a un operador de expresión.
Operador de agregación
Utilice el operador de agregación para realizar cálculos como una suma o un recuento, en todas las filas o en un grupo de filas para crear atributos derivados nuevos.
Utilice el Creador de expresiones para seleccionar visualmente elementos para crear una expresión en el editor. También puede escribir manualmente una expresión usted mismo.
El panel Add Expression tiene dos secciones: Expression information y Expression builder. Los campos Información de expresión permiten especificar un nombre y un tipo de dato para la expresión. También puede crear la expresión para aplicarla a dos o más atributos. Al trabajar con tipos de datos complejos como Map, Array y Struct que pueden tener niveles de tipos anidados, puede dejar que el creador detecte el tipo de datos de la expresión que introduzca. Al dejar que el creador infiera el tipo de datos, puede obtener una vista previa y refrescar el tipo de datos y validar la expresión.
La sección Creador de expresiones muestra los elementos para crear una expresión. Los elementos que puede utilizar en una expresión incluyen atributos, parámetros y funciones de entrada. Haga clic dos veces o arrastre un elemento de la lista para agregarlo al editor a fin de crear la expresión o escriba manualmente la expresión usted mismo. Puede validar la expresión antes de crearla.
De entrada muestra los atributos del operador ascendente que se transfieren a este operador de expresión. Debajo de la lista de atributos hay una casilla de control que le permite aplicar reglas de exclusión. Para excluir uno o más atributos de entrada de la salida de esta expresión, active la casilla de control Excluir atributos entrantes. A continuación, utilice el menú para agregar los atributos de entrada que desea excluir de la salida. Se aplica una regla de exclusión a cada atributo que seleccione para excluir. Puede excluir atributos solo cuando agrega la expresión la primera vez. Al editar la expresión, la casilla de control Excluir atributos entrantes no está disponible.
Los parámetros son los parámetros de expresión que se han agregado al flujo de datos mediante el Creador de condiciones (operadores de filtro, unión, consulta y división) o el Creador de expresiones (operadores de expresión y agregación). Un parámetro de expresión tiene un nombre, un tipo y un valor por defecto. Consulte Adición de un parámetro de expresión.
Las Funciones son operaciones realizadas en argumentos transferidos a la función. Las funciones calculan, manipulan o extraen valores de datos de los argumentos. A continuación se muestra una lista de funciones disponibles que puede utilizar para crear expresiones:
Función | Descripción | Ejemplo |
---|---|---|
COUNT(value[, value]*) | Devuelve el número de filas para las que una o más expresiones proporcionadas son no nulas. | COUNT(expr1) |
COUNT(*) | Devuelve el número total de filas recuperadas, incluidas las filas que contienen un valor nulo. | COUNT(*) |
MAX(value) | Devuelve el valor máximo del argumento. | MAX(expr) |
MIN(value) | Devuelve el valor mínimo del argumento. | MIN(expr) |
SUM(numeric) | Devuelve la suma calculada a partir de los valores de un grupo. | SUM(expr1) |
AVG(numeric) | Devuelve la media de valores numéricos en una expresión. | AVG(AGGREGATE_1.src1.attribute1) |
LISTAGG(column[, delimiter]) WITHIN GROUP (order_by_clause) | Concatena valores de la columna de entrada con el delimitador especificado, para cada grupo en función de la cláusula order. La columna contiene los valores que desea concatenar en el resultado. El delimitador separa los valores de columna del resultado. Si no se proporciona un delimitador, se utiliza un carácter vacío. order_by_clause determina el orden en que se devuelven los valores concatenados. Esta función solo se puede utilizar como agregador y se puede utilizar con agrupación o sin agrupación. Si se utiliza sin agrupación, el resultado es una sola fila. Si se utiliza con una agrupación, la función devuelve una fila para cada grupo. | Piense en una tabla con dos columnas,
Ejemplo 1: Sin agrupación
Ejemplo 2: Agrupar por
|
Los operadores de flujo de datos que soportan la creación de expresiones y tipos de dato jerárquicos pueden utilizar funciones de orden superior.
Los operadores soportados son:
-
Agregar
-
Expresión
-
Filtro
-
Entrar
-
Consulta
-
Dividir
-
Girar
Función | Descripción | Ejemplo |
---|---|---|
TRANSFORM(column, lambda_function) | Toma una matriz y una función anónima, y configura una nueva matriz aplicando la función a cada elemento y asignando el resultado a la matriz de salida. | Para una matriz de entrada de enteros [1, 2, 3] , TRANSFORM(array, x -> x + 1) devuelve una nueva matriz de [2, 3, 4] . |
TRANSFORM_KEYS(column, lambda_function) | Toma una asignación y una función con 2 argumentos (clave y valor), y devuelve una asignación en la que las claves tienen el tipo del resultado de la función lambda, y los valores tienen el tipo de los valores de asignación de columna. | Para una asignación de entrada con claves enteras y valores de cadena de {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} , TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) devuelve una nueva asignación de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} . |
TRANSFORM_VALUES(column, lambda_function) | Toma un mapa y una función con 2 argumentos (clave y valor), y devuelve un mapa en el que los valores tienen el tipo del resultado de las funciones lambda, y las claves tienen el tipo de las claves del mapa de columnas. | Para una asignación de entrada con claves de cadena y valores de cadena de {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} , TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) devuelve una nueva asignación de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Solo el operador de expresión soporta Toma una matriz y la ordena según la función dada que toma 2 argumentos. La función debe devolver -1, 0 o 1 en función de si el primer elemento es menor que, igual a o mayor que el segundo elemento. Si se omite la función, la matriz se ordena en orden ascendente. |
La matriz devuelta es: [1,5,6] |
Operador de valor distinto
Utilice el operador de valor distinto para devolver filas de valores distintos con valores únicos.
Operador de ordenación
Utilice el operador de ordenación para ordenar los datos en orden ascendente o descendente.
Al utilizar un operador de ordenación, recomendamos aplicar el operador de ordenación después de aplicar otros operadores. Esto garantiza que el operador de ordenación permanezca inmediatamente antes del operador de destino, lo que permite que los datos se inserten en el destino en un orden específico.
Al utilizar un operador de ordenación, aplíquelo después de otros operadores de conformación y antes del operador que requiere que se ordenen los datos.
Por ejemplo, aplique el operador de ordenación delante de un operador de destino para insertar los datos en el destino con una ordenación específica.
Después de agregar un operador de ordenación en el lienzo y de conectarlo con otro operador, puede agregar una condición de orden.
En el panel Agregar condición de orden, puede seleccionar los atributos para la ordenación en los campos mostrados o filtrar nombres de atributo mediante patrones. Para los tipos de dato de cadena, la operación de ordenación se produce en orden lexicográfico.
Para agregar condiciones de orden:
- En el separador Detalles, vaya a la sección Condiciones de ordenación y seleccione Agregar.
El panel Agregar condición de orden muestra todos los campos de atributo recuperados de la tabla de origen.
- En el panel Add sort condition, seleccione el atributo por el que ordenar los datos.
- Para filtrar atributos mediante patrones de nombre, introduzca un patrón de nombre, por ejemplo, *CITY*.
- En Ordenación, seleccione Ascendente o Descendente y, a continuación, seleccione Agregar.
Cada condición agregada se muestra en la lista de condiciones de orden.
Nota
Puede agregar varias condiciones de orden una a una. La ordenación se realiza según el orden de las condiciones de orden de la lista. Por ejemplo, la ordenación se produce primero según la primera condición de la lista y, a continuación, los datos ordenados se vuelven a ordenar según la segunda condición, y así sucesivamente.
Mueva las condiciones de orden hacia arriba o hacia abajo en la lista para priorizar la ordenación.
Al mover las condiciones de ordenación hacia arriba o hacia abajo, puede ordenar primero por una condición de ordenación de prioridad alta y, a continuación, volver a ordenar los datos ordenados por la siguiente condición de la lista. Por ejemplo, para ordenar primero por dirección y después por código postal, mueva la condición de orden de dirección a la parte superior.
Para priorizar las condiciones de orden:
Para editar condiciones de orden:
Puede suprimir las condiciones de orden una por una o puede realizar una supresión masiva.
Para suprimir condiciones de orden:
- En el separador Detalles, vaya a la sección Condiciones de orden.
-
Para suprimir condiciones de orden una por una, seleccione el menú Acciones (
) correspondiente a la condición del orden que desea suprimir.
- Para suprimir varias condiciones del orden, seleccione las casilla de control correspondientes a cada una y, a continuación, seleccione Suprimir en la parte superior de la lista.
Operador de unión
Utilice el operador de unión para realizar una operación de unión entre dos o más juegos de datos.
Puede realizar una operación de unión en hasta diez operadores de origen. Debe configurar al menos dos entradas de origen. Puede seleccionar que se realice la operación de unión haciendo coincidir los nombres de atributo en los atributos de entrada de origen, o bien, puede hacer coincidir los atributos por su posición de atributo.
Considere los siguientes dos ejemplos de entidad de datos. La entidad de datos 1 se define como entrada principal. La entidad de datos resultante muestra cómo se combinan los datos de las dos entradas durante una operación de unión por nombre. La entidad de datos resultante utiliza el nombre de atributo, el orden y el tipo de dato de la entidad de datos de entrada principal.
Entidad de datos 1, entrada principal
Department | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Shipping | 1500 | Southlake (Texas) |
Accounting | 1700 | New Jersey |
Entidad de datos 2
Warehouse | LOCATION-ID | Department |
---|---|---|
Denver | 1600 | Benefits |
New York | 1400 | Construction |
Entidad de datos resultante
Department | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Shipping | 1500 | Southlake (Texas) |
Accounting | 1700 | New Jersey |
Benefits | 1600 | Denver |
Construction | 1400 | New York |
Considere los siguientes dos ejemplos de entidad de datos. La entidad de datos 2 se define como entrada principal. La entidad de datos resultante muestra cómo se combinan los datos de las dos entradas durante una operación de unión por posición. La entidad de datos resultante utiliza el nombre de atributo, el orden y el tipo de dato de la entidad de datos de entrada principal.
Entidad de datos 1
Department | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Shipping | 1500 | Southlake (Texas) |
Accounting | 1700 | New Jersey |
Entidad de datos 2, entrada principal
Warehouse | LOCATION-ID | Department |
---|---|---|
Denver | 1600 | Benefits |
New York | 1400 | Construction |
Entidad de datos resultante
Warehouse | LOCATION-ID | Department |
---|---|---|
Denver | 1600 | Benefits |
New York | 1400 | Construction |
IT | 1400 | San Francisco |
Shipping | 1500 | Southlake (Texas) |
Accounting | 1700 | New Jersey |
Operador de resta
Utilice el operador de resta para comparar dos entidades de datos y devolver las filas que están presentes en una entidad pero que no están presentes en la otra entidad.
Puede seleccionar que se mantengan o se eliminen las filas duplicadas en los datos resultantes.
Puede realizar una operación de resta solo en dos operadores de origen. Puede seleccionar que se realice la operación de resta haciendo coincidir los nombres de atributo en los atributos de entrada de origen, o bien, puede hacer coincidir los atributos por su posición de atributo.
Considere los siguientes dos ejemplos de entidad de datos. La entidad de datos 1 se define como entrada principal. La entidad de datos resultante muestra cómo se restan los datos de las dos entradas durante una operación de resta por nombre. La entidad de datos resultante utiliza el nombre de atributo, el orden y el tipo de dato de la entidad de datos de entrada principal.
Entidad de datos 1, entrada principal
Department | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Shipping | 1500 | Austin |
Accounting | 1700 | New Jersey |
Entidad de datos 2
Department | Warehouse | LOCATION-ID |
---|---|---|
Benefits | Denver | 1600 |
IT | San Francisco | 1400 |
Entidad de datos resultante
Department | LOCATION-ID | Warehouse |
---|---|---|
Shipping | 1500 | Austin |
Accounting | 1700 | New Jersey |
Considere los siguientes dos ejemplos de entidad de datos. La entidad de datos 2 se define como entrada principal. La entidad de datos resultante muestra cómo se restan los datos de las dos entradas durante una operación de resta por posición. La entidad de datos resultante utiliza el nombre de atributo, el orden y el tipo de dato de la entidad de datos de entrada principal.
Entidad de datos 1
Department | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Shipping | 1500 | Austin |
Accounting | 1700 | New Jersey |
Entidad de datos 2, entrada principal
Department-Name | Location | Warehouse-City |
---|---|---|
Benefits | 1600 | Denver |
IT | 1400 | San Francisco |
Entidad de datos resultante
Department-Name | Location | Warehouse-City |
---|---|---|
Benefits | 1600 | Denver |
Operador de intersección
Utilice el operador de intersección para comparar dos o más entidades de datos y devolver las filas que están presentes en las entidades conectadas.
Puede seleccionar que se mantengan o se eliminen las filas duplicadas en los datos resultantes.
Puede realizar una operación de intersección en dos o más operadores de origen. Puede seleccionar que se realice la operación haciendo coincidir los nombres de atributo en los atributos de entrada de origen, o bien, puede hacer coincidir los atributos por su posición de atributo.
Considere los siguientes dos ejemplos de entidad de datos. La entidad de datos 1 se define como entrada principal. La entidad de datos resultante muestra cómo se intersecan los datos de las dos entradas por nombre de atributo. La entidad de datos resultante utiliza el nombre de atributo, el orden y el tipo de dato de la entidad de datos de entrada principal.
Entidad de datos 1, entrada principal
Department | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Shipping | 1500 | Austin |
Accounting | 1700 | New Jersey |
Entidad de datos 2
Department | Warehouse | LOCATION-ID |
---|---|---|
Benefits | Denver | 1600 |
IT | San Francisco | 1400 |
Entidad de datos resultante
Department | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Considere los siguientes dos ejemplos de entidad de datos. La entidad de datos 2 se define como entrada principal. La entidad de datos resultante muestra cómo se intersecan los datos de las dos entradas por posición de atributo. La entidad de datos resultante utiliza el nombre de atributo, el orden y el tipo de dato de la entidad de datos de entrada principal.
Entidad de datos 1
Department | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Shipping | 1500 | Austin |
Accounting | 1700 | New Jersey |
Entidad de datos 2, entrada principal
Department-Name | Location | Warehouse-City |
---|---|---|
Benefits | 1600 | Denver |
IT | 1400 | San Francisco |
Entidad de datos resultante
Department-Name | Location | Warehouse-City |
---|---|---|
IT | 1400 | San Francisco |
Operador de división
Utilice el operador de división para dividir un origen de datos de entrada en dos o más puertos de salida en función de las condiciones de división que se evalúan en una secuencia.
Cada condición de división tiene un puerto de salida. Los datos que cumplen una condición se dirigen al puerto de salida correspondiente.
Por defecto, se configura un operador de división con la condición No coincidente (Unmatched), que siempre está disponible en la secuencia como última condición. No puede agregar su propia condición a la condición No coincidente. Tampoco puede suprimir la condición No coincidente.
El operador evalúa las condiciones de una en una. Después de evaluar todas las condiciones de la secuencia, los datos que no cumplen una condición se dirigen al puerto de salida No coincidente.
Supongamos que tiene la entidad de datos BANK con los atributos BANK_ID y BANK_NAME.
Defina dos condiciones de división. La secuencia completa, incluida la condición No coincidente (Unmatched), es la siguiente:
Puerto de salida de condición | Condición |
---|---|
CONDITION1 | SPLIT_1.BANK.BANK_ID<102 |
CONDITION2 | SPLIT_1.BANK.BANK_ID<104 |
UNMATCHED | La condición UNMATCHED por defecto dirige todos los datos que no cumplen las demás condiciones de la secuencia al puerto de salida UNMATCHED |
Entidad de datos BANK
La entidad de datos tiene cuatro filas.
BANK_ID | BANK_NAME |
---|---|
101 | A Bank 101 |
102 | B Bank 102 |
103 | C Bank 103 |
104 | D Bank 104 |
Salida de Condition1, Primera condición de coincidencia
CONDITION1 devuelve una fila coincidente.
BANK_ID | BANK_NAME |
---|---|
101 | A Bank 101 |
Salida de Condition2, Primera condición de coincidencia
CONDITION2 devuelve dos filas coincidentes (a partir de las filas no coincidentes después de CONDITION1).
BANK_ID | BANK_NAME |
---|---|
102 | B Bank 102 |
103 | C Bank 103 |
Salida de la condición No coincidente, Primera condición de coincidencia
La condición UNMATCHED devuelve la fila restante.
BANK_ID | BANK_NAME |
---|---|
104 | D Bank 104 |
Salida de Condition1, todas las condiciones coincidentes
CONDITION1 devuelve una fila coincidente.
BANK_ID | BANK_NAME |
---|---|
101 | A Bank 101 |
Salida de Condition2, todas las condiciones coincidentes
Todos los datos se evalúan según CONDITION2, devolviendo tres filas coincidentes.
BANK_ID | BANK_NAME |
---|---|
101 | A Bank 101 |
102 | B Bank 102 |
103 | C Bank 103 |
Salida de la condición No coincidente, todas las condiciones de coincidencia
La condición UNMATCHED devuelve las filas que no cumplen CONDITION1 y CONDITION2.
BANK_ID | BANK_NAME |
---|---|
104 | D Bank 104 |
Cuando agrega un operador de división en el lienzo, por defecto, el icono de operador de división aparece ampliado y muestra la condición de división No coincidente. La condición No coincidente dirige todos los datos que no cumplen las otras condiciones que agregue a la secuencia.
Utilice el Creador de condiciones para seleccionar visualmente elementos para crear y agregar una condición de división. También puede introducir una condición de división manualmente en el editor.
Puede agregar condiciones de división a una secuencia de condiciones existente. Las condiciones de división se agregan al final de la secuencia, antes de la condición No coincidente. No puede agregar su propia condición a la condición No coincidente.
Los elementos que puede utilizar en una condición de división incluyen atributos, parámetros y funciones de entrada. Puede arrastrar o hacer doble clic en un elemento de la lista para agregarlo al editor a fin de crear una condición. Puede validar la condición antes de crearla.
De entrada muestra los atributos del puerto ascendente. Por ejemplo:
SPLIT_1.BANK.BANK_NAME='ABC Bank'
Los parámetros son los parámetros de expresión que se han agregado al flujo de datos mediante el Creador de condiciones (operadores de filtro, unión, consulta y división) o el Creador de expresiones (operadores de expresión y agregación). Un parámetro de expresión tiene un nombre, un tipo y un valor por defecto. Consulte Adición de un parámetro de expresión.
Supongamos que crea un parámetro VARCHAR
con el nombre P_VARCHAR_NAME
y define el valor por defecto en ABC BANK
. A continuación, puede utilizar el parámetro en una condición de división de la siguiente manera:
SPLIT_1.BANK.BANK_NAME=$P_VARCHAR_NAME
Las funciones son las funciones disponibles en Data Integration que puede utilizar en una condición. Las funciones son operaciones realizadas en argumentos transferidos a la función. Las funciones calculan, manipulan o extraen valores de datos de los argumentos.
Supongamos que crea un parámetro VARCHAR
con el nombre P_VARCHAR_LIKE
y define el valor por defecto en B%
. A continuación, puede utilizar el parámetro en una condición de división de la siguiente manera:
SPLIT_1.BANK.BANK_NAME LIKE $P_VARCHAR_LIKE
A continuación se muestra una lista de funciones que están disponibles para su agregación al crear condiciones:
Función | Descripción | Ejemplo |
---|---|---|
MD5(all data types) | Calcula un total de control MD5 del tipo de dato y devuelve un valor de cadena. | MD5(column_name) |
SHA1(all data types) | Calcula un valor hash SHA-1 del tipo de dato y devuelve un valor de cadena. | SHA1(column_name) |
SHA2(all data types, bitLength) | Calcula un valor hash SHA-2 del tipo de dato y devuelve un valor de cadena. bitLength es un entero. | SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512) . |
ORA_HASH(expr, [max_bucket], [seed_value]) |
Calcula un valor hash para
Oracle aplica la función hash a la combinación de |
|
Función | Descripción | Ejemplo |
---|---|---|
ABS(numeric) | Devuelve la potencia absoluta del valor numeric . | ABS(-1) |
CEIL(numeric) | Devuelve el entero más pequeño que no sea mayor que el valor numeric | CEIL(-1,2) |
FLOOR(numeric) | Devuelve el entero más grande que no sea mayor que el valor numeric | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Devuelve el resto después de dividir numeric1 por numeric2 . | MOD(8,2) |
POWER(numeric1, numeric2) | Eleva numeric1 a la potencia numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Devuelve numeric1 redondeado a numeric2 posiciones decimales. | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Devuelve numeric1 truncado a numeric2 posiciones decimales. | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Convierte una expr a un número, según el valor de format y de locale opcional proporcionados. La configuración regional por defecto es en-US . Etiquetas de idioma soportadas.Patrones de formato soportados:
|
|
Función | Descripción | Ejemplo |
---|---|---|
CURRENT_DATE |
Devuelve la fecha actual. | CURRENT_DATE devuelve la fecha de hoy, como 2023-05-26 |
CURRENT_TIMESTAMP |
Devuelve la hora y la fecha actuales de la zona horaria de la sesión. | CURRENT_TIMESTAMP devuelve la fecha actual y la hora actual, como 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Devuelve la fecha que es el valor number especificado de los días posteriores al valor date especificado. |
DATE_ADD('2017-07-30', 1) devuelve 2017-07-31 |
DATE_FORMAT(expr, format[, locale]) |
Aplica un formato Patrones de formato de fecha soportados:
|
|
DAYOFMONTH(date) |
Devuelve el día del mes de la fecha. | DAYOFMONTH('2020-12-25') devuelve 25 |
DAYOFWEEK(date) |
Devuelve el día de la semana de la fecha. | DAYOFWEEK('2020-12-25') devuelve 6 para Friday. En los Estados Unidos, el domingo se considera 1, el lunes es 2, y así sucesivamente. |
DAYOFYEAR(date) |
Devuelve el día del año de la fecha. | DAYOFYEAR('2020-12-25') devuelve 360 |
WEEKOFYEAR(date) |
Devuelve la semana del año de la fecha. |
|
HOUR(datetime) |
Devuelve el valor de hora de la fecha y hora. | HOUR('2020-12-25 15:10:30') devuelve 15 |
LAST_DAY(date) |
Devuelve el último día del mes de la fecha. | LAST_DAY('2020-12-25') devuelve 31 |
MINUTE(datetime) |
Devuelve el valor de minutos de la fecha y hora. | HOUR('2020-12-25 15:10:30') devuelve 10 |
MONTH(date) |
Devuelve el valor de mes de la fecha. | MONTH('2020-06-25') devuelve 6 |
QUARTER(date) |
Devuelve el trimestre del año en el que se encuentra la fecha. | QUARTER('2020-12-25') devuelve 4 |
SECOND(datetime) |
Devuelve el segundo valor de la fecha y hora. | SECOND('2020-12-25 15:10:30') devuelve 30 |
TO_DATE(string, format_string[, localeStr]) |
Analiza la expresión de cadena con la expresión format_string en una fecha. La configuración regional es opcional. El valor por defecto es en-US . Etiquetas de idioma soportadas.En las expresiones de pipeline,
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Convierte una expr de VARCHAR a un valor de TIMESTAMP, según el valor de format_string y de localeStr opcional proporcionados.En las expresiones de pipeline,
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') devuelve un objeto TIMESTAMP que representa 11am 10:10 Oct 11th, 2020 |
WEEK(date) |
Devuelve el valor de semana de la fecha. |
WEEK('2020-06-25') devuelve 4 |
YEAR(date) |
Devuelve el valor de año de la fecha. | YEAR('2020-06-25') devuelve 2020 |
ADD_MONTHS(date_expr, number_months) |
Devuelve la fecha después de agregar el número de meses especificado a la fecha, registro de hora o cadena especificados con un formato como yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Devuelve el número de meses entre Se devuelve un número entero si ambas fechas son el mismo día del mes o ambas son el último día de sus meses respectivos. De lo contrario, la diferencia se calcula en función de 31 días al mes. |
|
FROM_UTC_TIMESTAMP(time_stamp, time_zone) |
Interpreta una fecha, un registro de hora o una cadena como hora UTC y la convierte en un registro de hora en la zona horaria especificada. Para la cadena, utilice un formato como: El formato de zona horaria es un ID de zona basado en región (por ejemplo, 'área/ciudad' como 'Asia/Seúl' o un desfase de zona horaria (por ejemplo, UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') devuelve 2017-07-14 03:40:00.0 |
TO_UTC_TIMESTAMP(time_stamp, time_zone) |
Convierte una fecha, un registro de hora o una cadena en la zona horaria especificada en un registro de hora UTC. Para la cadena, utilice un formato como: El formato de zona horaria es un ID de zona basado en región (por ejemplo, 'área/ciudad' como 'Asia/Seúl') o un desfase de zona horaria (por ejemplo, UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') devuelve 2017-07-14 01:40:00.0
|
FROM_UNIXTIME(unix_time[, fmt]) |
Convierte la hora o época de Unix especificada en una cadena que representa el registro de hora de ese momento en la zona horaria del sistema actual y en el formato especificado. Nota: La hora de Unix es el número de segundos transcurridos desde el 1 de enero de 1970 00:00:00 UTC. Si se omite |
La zona horaria por defecto es PST en los ejemplos |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Convierte la hora actual o especificada en un registro de hora de Unix en segundos.
Si no se proporciona Si |
La zona horaria por defecto es PST en este ejemplo |
INTERVAL 'year' YEAR[(year_precision)] |
Devuelve un período de tiempo en años. year_precision es el número de dígitos del campo year; está comprendido entre 0 y 9. Si se suprime year_precision, el valor por defecto es 2 (debe ser inferior a 100 años). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Devuelve un período de tiempo en años y meses. Se utiliza para almacenar un período de tiempo utilizando los campos year y month. year_precision es el número de dígitos del campo year; está comprendido entre 0 y 9. Si se suprime year_precision, el valor por defecto es 2 (debe ser inferior a 100 años). |
INTERVAL '100-5' YEAR(3) TO MONTH devuelve un intervalo de 100 años, 5 meses. Debe especificar una precisión de año inicial 3. |
INTERVAL 'month' MONTH[(month_precision)] |
Devuelve un período de tiempo en meses. month_precision es el número de dígitos del campo mes; está comprendido entre 0 y 9. Si se suprime month_precision, el valor por defecto es 2 (debe ser inferior a 100 años). |
INTERVAL '200' MONTH(3) devuelve un intervalo de 200 meses. Debe especificar una precisión de mes 3. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en días, horas, minutos y segundos. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. fractional_seconds_precision es el número de dígitos de la parte fraccional del valor second del campo time; está comprendido entre 0 y 9. |
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) devuelve un intervalo de 11 días, 10 horas, 09 minutos, 08 segundos y 555 milésimas de segundo |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Devuelve un período de tiempo en días, horas y minutos. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '11 10:09' DAY TO MINUTE devuelve un intervalo de 11 días, 10 horas y 09 minutos |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Devuelve un período de tiempo en días y horas. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '100 10' DAY(3) TO HOUR devuelve un intervalo de 100 días y 10 horas |
INTERVAL 'day' DAY[(day_precision)] |
Devuelve un período de tiempo en días. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. |
INTERVAL '999' DAY(3) devuelve un intervalo de 999 días |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en días, horas, minutos y segundos. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. fractional_seconds_precision es el número de dígitos de la parte fraccional del valor second del campo time; está comprendido entre 0 y 9. |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) devuelve un intervalo de 9 horas, 08 minutos y 76 666 666 segundos |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Devuelve un período de tiempo en horas y minutos. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '09:30' HOUR TO MINUTE devuelve un intervalo de 9 horas y 30 minutos |
INTERVAL 'hour' HOUR[(hour_precision)] |
Devuelve un período de tiempo en horas. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '40' HOUR devuelve un intervalo de 40 horas |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Devuelve un período de tiempo en minutos. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '15' MINUTE devuelve un intervalo de 15 minutos |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en minutos y segundos. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. fractional_seconds_precision es el número de dígitos de la parte fraccional del valor second del campo time; está comprendido entre 0 y 9. |
INTERVAL '15:30' MINUTE TO SECOND devuelve un intervalo de 15 minutos y 30 segundos |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en segundos. fractional_seconds_precision es el número de dígitos en la parte fraccional del campo second; oscila entre 0 y 9. El valor por defecto es 3. |
INTERVAL '15.678' SECOND devuelve un intervalo de 15 678 segundos |
Función | Descripción | Ejemplo |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Devuelve el valor evaluado en la fila que es la primera fila del marco de ventana. | FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) devuelve el primer valor de BANK_ID en una ventana en la que las filas se calculan como la fila actual y 1 fila después de esa fila, particionada por BANK_ID y en orden ascendente por BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Devuelve el valor evaluado en la fila en un desplazamiento determinado antes de la fila actual dentro de la partición. Si no existe dicha fila, se devuelve el valor por defecto. Tanto el desplazamiento como el valor por defecto se evalúan con respecto a la fila actual. Si se omite, el desplazamiento se define por defecto en 1 y por defecto en NULL. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) devuelve el valor de BANK_ID de la segunda fila antes de la fila actual, particionado por BANK_ID y en orden descendente por BANK_NAME . Si no existe dicho valor, se devuelve hello . |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Devuelve el valor evaluado en la fila que es la última fila del marco de ventana. | LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) devuelve el último valor de BANK_ID en una ventana en la que las filas se calculan como la fila actual y 1 fila después de esa fila, particionado por BANK_ID y en orden ascendente por BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Devuelve el valor evaluado en la fila en un desplazamiento determinado después de la fila actual dentro de la partición. Si no existe dicha fila, se devuelve el valor por defecto. Tanto el desplazamiento como el valor por defecto se evalúan con respecto a la fila actual. Si se omite, el desplazamiento se define por defecto en 1 y por defecto en NULL. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) devuelve el valor de BANK_ID de la segunda fila después de la fila actual, particionado por BANK_ID y en orden ascendente por BANK_NAME . Si no existe dicho valor, se devuelve hello . |
RANK() OVER([ partition_clause ] order_by_clause) |
Devuelve el rango de la fila actual con intervalos, contando desde 1. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) devuelve el rango de cada fila dentro del grupo de partición BANK_ID , en orden ascendente por BANK_NAME . |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Devuelve el número único de la fila actual dentro de su partición, contando desde 1. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) devuelve el número de fila único de cada fila dentro del grupo de partición BANK_ID , en orden ascendente por BANK_NAME . |
Funciones | Descripción | Ejemplo |
---|---|---|
CAST(value AS type) | Devuelve el valor especificado en el tipo especificado. | CAST("10" AS INT) devuelve 10 |
CONCAT(string, string) | Devuelve los valores combinados de cadenas o columnas. | CONCAT('Oracle','SQL') devuelve OracleSQL |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Devuelve los valores combinados de cadenas o columnas utilizando el separador especificado entre las cadenas o columnas. Se necesita un separador y debe ser una cadena. Se debe proporcionar al menos una expresión después del separador. Por ejemplo: |
CONCAT_WS('-', 'Hello', 'Oracle') devuelve Hello-Oracle
Si un secundario de la función es una matriz, la matriz se simplifica:
|
INITCAP(string) | Devuelve la cadena con la primera letra de cada palabra en mayúsculas, mientras que el resto de letras están en minúsculas, y cada palabra está delimitada por un espacio en blanco. | INITCAP('oRACLE sql') devuelve Oracle Sql |
INSTR(string, substring[start_position]) | Devuelve el índice (basado en 1) de la primera ocurrencia de substring en string . | INSTR('OracleSQL', 'SQL') devuelve 7 |
LOWER(string) | Devuelve la cadena con todas las letras cambiadas a minúsculas. | LOWER('ORACLE') devuelve oracle |
LENGTH(string) | Devuelve la longitud de caracteres de la cadena o el número de bytes de datos binarios. La longitud de la cadena incluye los espacios finales. | LENGTH('Oracle') devuelve 6 |
LTRIM(string) | Devuelve la cadena con los espacios iniciales eliminados de la izquierda. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Devuelve el argumento que no es nulo. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Busca y extrae la cadena que coincide con un patrón de expresión regular de la cadena de entrada. Si se ha proporcionado el índice de grupo de captura opcional, la función extrae el grupo específico. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) devuelve 22 |
REPLACE(string, search, replacement) | Sustituye todas las ocurrencias de search por replacement .Si no se encuentra Si no se especifica | REPLACE('ABCabc', 'abc', 'DEF') devuelve ABCDEF |
RTRIM(string) | Devuelve la cadena con los espacios iniciales eliminados de la derecha. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Devuelve la subcadena que empieza en la posición. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) devuelve rac |
Para números, TO_CHAR(expr) y para fechas TO_CHAR(expr, format[, locale]) | Convierte números y fechas en cadenas. Para los números, no es necesario ningún formato. Para las fechas, utilice el mismo formato que DATE_FORMAT descrito en Funciones de fecha y hora. La configuración regional por defecto es en-US . Consulte las etiquetas de idioma soportadas.En las expresiones de pipeline,
| Ejemplo de número: Ejemplo de fecha: |
UPPER(string) | Devuelve una cadena con todas las letras cambiadas a mayúsculas. | UPPER('oracle') devuelve ORACLE |
LPAD(str, len[, pad]) | Devuelve una cadena que está rellena a la izquierda con caracteres especificados a una longitud determinada. Si se deja el carácter pad, el valor por defecto es un espacio. | LPAD('ABC', 5, '*') devuelve '**ABC' |
RPAD(str, len[, pad]) | Devuelve una cadena que está rellenada a la derecha con caracteres especificados a una longitud determinada. Si se deja el carácter pad, el valor por defecto es un espacio. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Función | Descripción | Ejemplo |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Devuelve el valor para el que se cumple una condición. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END devuelve ABC si 1> 0 , de lo contrario, devuelve XYZ |
AND | Operador lógico AND. Devuelve true si ambos operandos son verdaderos; de lo contrario, devuelve false. | (x = 10 AND y = 20) devuelve "true" si x es igual a 10 e y es igual a 20. Si uno de las dos no es verdadero, devuelve "false" |
OR | Operador lógico OR. Devuelve true si cualquiera de los operandos es true o ambos son true; de lo contrario, devuelve false. | (x = 10 OR y = 20) devuelve "false" si x no es igual a 10 y, también, si y no es igual a 20. Si cualquiera de ellos es verdadero, devuelve "true" |
NOT | Operador lógico NOT. | |
LIKE | Realiza una coincidencia de patrones de cadena, si string1 coincide con el patrón de string2. | |
= | Comprueba la igualdad. Devuelve true si expr1 es igual a expr2; de lo contrario, devuelve false. | x = 10 devuelve "true" cuando el valor de x es 10; de lo contrario, devuelve "false" |
!= | Comprueba la desigualdad. Devuelve true si expr1 no es igual a expr2; de lo contrario, devuelve false. | x != 10 devuelve "false" si el valor de x es 10; de lo contrario, devuelve "true" |
> | Comprueba si una expresión es mayor que. Devuelve true si expr1 es mayor que expr2. | x > 10 devuelve "true" si el valor de x es mayor que 10; de lo contrario, devuelve "false" |
>= | Comprueba si una expresión es mayor o igual que. Devuelve true si expr1 es mayor o igual que expr2. | x > =10 devuelve "true" si el valor de x es mayor o igual que 10; de lo contrario, devuelve "false" |
< | Comprueba si una expresión es menor que. Devuelve true si expr1 es menor que expr2. | x < 10 devuelve "true" si el valor de x es menor que 10; de lo contrario, devuelve "false" |
<= | Comprueba si una expresión es menor o igual que. Devuelve true si expr1 es menor o igual que expr2. | x <= 10 devuelve "true" si el valor de x es menor que 10; de lo contrario, devuelve "false" |
|| | Concatena dos cadenas. | 'XYZ' || 'hello' devuelve 'XYZhello' |
BETWEEN | Evalúa un rango. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Prueba si una expresión coincide con una lista de valores. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Función | Descripción | Ejemplo |
---|---|---|
NUMERIC_ID() | Genera un identificador único universal que es un número de 64 bits para cada fila. | NUMERIC_ID() devuelve, por ejemplo, 3458761969522180096 y 3458762008176885761 |
ROWID() | Genera números de 64 bits monótonamente. | ROWID() devuelve, por ejemplo, 0 , 1 , 2 , etc. |
UUID() | Genera un identificador único universal que es una cadena de 128 bits para cada fila. | UUID() devuelve, por ejemplo, 20d45c2f-0d56-4356-8910-162f4f40fb6d |
MONOTONICALLY_INCREASING_ID() |
Genera números enteros únicos que aumentan monótonamente 64 bits que no son números consecutivos. | MONOTONICALLY_INCREASING_ID() returns for example, 8589934592 and 25769803776 |
Función | Descripción | Ejemplo |
---|---|---|
COALESCE(value, value [, value]*) | Devuelve el primer argumento no nulo, si existe; de lo contrario, devuelve null. | COALESCE(NULL, 1, NULL) devuelve 1 |
NULLIF(value, value) | Devuelve null si los dos valores son iguales entre sí; de lo contrario, devuelve el primer valor. | NULLIF('ABC','XYZ') devuelve ABC |
Función | Descripción | Ejemplo |
---|---|---|
SCHEMA_OF_JSON(string) | Analiza una cadena JSON e infiere el esquema en formato DDL. |
|
FROM_JSON(column, string) | Analiza una columna que contiene una cadena JSON en uno de los siguientes tipos, con el esquema especificado.
|
|
TO_JSON(column) | Convierte una columna que contiene un tipo Struct o Array of Structs, o Map o Array of Map en una cadena JSON. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) devuelve una cadena JSON {"s1":[1,2,3],"s2":{"key":"value"}} |
TO_MAP(string,column[,string,column]*) | Crea una nueva columna de tipo Asignación. Las columnas de entrada se deben agrupar como pares clave-valor. Las columnas de clave de entrada no pueden ser nulas y todas deben tener el mismo tipo de datos. Todas las columnas de valor de entrada deben tener el mismo tipo de datos. |
|
TO_STRUCT(string,column[,string,column]*) | Crea una nueva columna de tipo Struct. Las columnas de entrada se deben agrupar como pares clave-valor. |
|
TO_ARRAY(column[,column]*) | Crea una nueva columna como tipo Array. Todas las columnas de entrada deben tener el mismo tipo de datos. |
|
Los operadores de flujo de datos que soportan la creación de expresiones y tipos de dato jerárquicos pueden utilizar funciones de orden superior.
Los operadores soportados son:
-
Agregar
-
Expresión
-
Filtro
-
Entrar
-
Consulta
-
Dividir
-
Girar
Función | Descripción | Ejemplo |
---|---|---|
TRANSFORM(column, lambda_function) | Toma una matriz y una función anónima, y configura una nueva matriz aplicando la función a cada elemento y asignando el resultado a la matriz de salida. | Para una matriz de entrada de enteros [1, 2, 3] , TRANSFORM(array, x -> x + 1) devuelve una nueva matriz de [2, 3, 4] . |
TRANSFORM_KEYS(column, lambda_function) | Toma una asignación y una función con 2 argumentos (clave y valor), y devuelve una asignación en la que las claves tienen el tipo del resultado de la función lambda, y los valores tienen el tipo de los valores de asignación de columna. | Para una asignación de entrada con claves enteras y valores de cadena de {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} , TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) devuelve una nueva asignación de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} . |
TRANSFORM_VALUES(column, lambda_function) | Toma un mapa y una función con 2 argumentos (clave y valor), y devuelve un mapa en el que los valores tienen el tipo del resultado de las funciones lambda, y las claves tienen el tipo de las claves del mapa de columnas. | Para una asignación de entrada con claves de cadena y valores de cadena de {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} , TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) devuelve una nueva asignación de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Solo el operador de expresión soporta Toma una matriz y la ordena según la función dada que toma 2 argumentos. La función debe devolver -1, 0 o 1 en función de si el primer elemento es menor que, igual a o mayor que el segundo elemento. Si se omite la función, la matriz se ordena en orden ascendente. |
La matriz devuelta es: [1,5,6] |
Puede editar cualquier condición de división excepto la condición No coincidente.
Puede mover una condición de división hacia arriba o hacia abajo en la secuencia. La condición No coincidente es la única que no se puede mover.
Puede suprimir cualquier condición de división excepto la condición No coincidente.
Operador PIVOT
El operador dinámico permite tomar valores de fila únicos de un atributo en un origen de entrada y girar los valores en varios atributos en la salida.
Mediante la entrada de varias filas, la operación dinámica realiza una transformación basada en expresiones de función agregada y los valores de un atributo que especifique como clave dinámica. El resultado de una operación dinámica es una salida dinámica o reorganizada de filas y atributos.
El número de filas de la salida se basa en la selección de atributos por los que agrupar.
- Si especifica uno o más atributos por los que agrupar, las filas de entrada que tienen el mismo valor de atributo agrupar por se agrupan en una fila. Por ejemplo, si especifica un atributo agrupar por que tenga cuatro valores únicos, los datos de entrada se transforman y agrupan en cuatro filas en la salida.
- Si no especifica ningún atributo por el que agrupar, todos los datos entrantes se transforman en una única fila de salida.
El número de atributos en la salida es:
- Según el número de atributos que seleccione por los que agrupar
- Un múltiplo del número de valores que selecciona en la clave dinámica
- Un resultado del número de atributos que transforman las expresiones de función de agregación
Por ejemplo, si selecciona un atributo group by y tres valores de clave dinámica, y agrega una expresión que transforma dos atributos, el número de atributos de la salida es:
1 + (3 * 2)
El número total de atributos en la salida dinámica resultante se calcula de la siguiente manera:
Number of group by attributes + (Number of pivot key values * Number of attributes that are transformed from expressions)
Los nombres de los nuevos atributos en la salida se derivan de un patrón que agrega para los atributos de destino al crear las expresiones.
Las funciones de agregado que utilice con un operador dinámico determinan los valores dinámicos de la salida. Si no se encuentran datos, se inserta un valor nulo donde se espera un valor dinámico.
Tenga en cuenta la entidad de datos PRODUCT_SALES, que incluye los atributos STORE, PRODUCT y SALES. La entidad de datos tiene cinco filas. Desea crear un elemento dinámico en el atributo PRODUCTO con una función SUM de agregado en SALES.
Puede especificar que se agrupen filas dinámicas por el atributo STORE. Cada valor STORE único se convierte en una fila en la salida resultante. Las filas de entrada con el mismo valor de agrupación se agrupan en la misma fila de la salida dinámica. Si no especifica un atributo group by, todas las filas de entrada se transforman en una sola fila en la salida resultante.
Especifique PRODUCT como clave dinámica y seleccione los tres valores para girar en nuevos atributos en la salida resultante.
La expresión de función SUM de agregado en SALES es:
SUM(PIVOT_1_1.PRODUCT_SALES.SALES)
El patrón para los atributos de destino es:
%PIVOT_KEY_VALUE%
Entidad de datos PRODUCT_SALES
STORE | PRODUCT | SALES |
---|---|---|
Tienda AB | Televisión | 2 |
Tienda AB | Televisión | 4 |
País-Tienda | Televisión | 6 |
País-Tienda | Refrigerador | 8 |
Tienda electrónica | Cafetera | 10 |
Salida dinámica: Group By STORE, Clave dinámica PRODUCT
STORE | TELEVISIÓN | REFRIGERADOR | CAFETERA |
---|---|---|---|
Tienda-AB | 6 | - | - |
País-Tienda | 6 | 8 | - |
Tienda electrónica | - | - | 10 |
Salida dinámica: sin Group By, Clave dinámica PRODUCT
TELEVISIÓN | REFRIGERADOR | CAFETERA |
---|---|---|
12 | 8 | 10 |
El operador dinámico realiza una transformación mediante una o más expresiones de función de agregado en uno o más valores de un atributo que especifique como clave dinámica.
Puede agrupar las filas dinámicas en una sola fila o seleccionar atributos para crear varias filas de salida basadas en el mismo valor agrupar por.
Se necesitan una o más expresiones de función de agregación para un operador dinámico.
Con el operador dinámico seleccionado en el lienzo del flujo de datos, en Expresiones del panel de propiedades, seleccione Agregar expresión.
En el panel Agregar expresión, introduzca un nombre para la expresión en el campo Identificador o deje el nombre como está.
(Opcional) Para utilizar un patrón para aplicar una expresión a varios atributos de origen, seleccione Permitir selección masiva.
Por ejemplo, supongamos que tiene dos atributos DISCOUNT_ en el juego de datos (DISCOUNT_VALUE y DISCOUNT_RATE) y desea aplicar la función
MAX
a ambos.En Atributos del origen, seleccione Patrón y seleccione Agregar patrón.
En el panel Agregar patrón de origen, agregue un patrón para seleccionar un grupo de atributos de origen que tengan nombres que comiencen por DISCOUNT_. Por ejemplo, introduzca
DISCOUNT*
y seleccione Agregar. A continuación, seleccione el tipo de datos.En Atributos de destino, utilice un patrón para los nombres de atributo de salida resultantes.
Por defecto, el patrón
%MACRO_INPUT%_%PIVOT_KEY_VALUE%
ya está insertado.%MACRO_INPUT%
se corresponde con los nombres de los atributos de origen seleccionados por el patrón que haya agregado.%PIVOT_KEY_VALUE%
se corresponde con los valores seleccionados en la clave dinámica.Por ejemplo, si
%PIVOT_KEY_VALUE%
indica TELEVISION y%MACRO_INPUT%
indica DISCOUNT_VALUE y DISCOUNT_RATE, en la salida, los atributos dinámicos son<pivot_name>.<expression_name>.DISCOUNT_VALUE_TELEVISION
y<pivot_name>.<expression_name>.DISCOUNT_RATE_TELEVISION
.- Puede mantener la selección de Usar tipos de dato de atributo de origen. De lo contrario, en Tipo de datos de expresión, seleccione el tipo de datos y complete los campos correspondientes al tipo seleccionado.
Si no ha seleccionado Permitir selección masiva, en Atributos de destino, utilice un patrón para los nombres de atributo de salida resultantes.
Por defecto, el patrón
%PIVOT_KEY_VALUE%
ya está insertado.%PIVOT_KEY_VALUE%
se corresponde con los valores seleccionados en la clave dinámica.Por ejemplo, si
%PIVOT_KEY_VALUE%
indica TELEVISION y TELEPHONE y, a continuación, en la salida, los atributos dinámicos son<pivot_name>.<expression_name>.TELEVISION
y<pivot_name>.<expression_name>.TELEPHONE
.En Tipo de datos de expresión, seleccione el tipo de datos y complete los campos correspondientes al tipo seleccionado.
En la sección Creador de expresiones, haga clic dos veces o arrastre los atributos, parámetros y funciones de agregación de entrada para agregarlos al editor a fin de crear la expresión. También puede escribir manualmente la expresión y validar la expresión.
En la siguiente tabla se muestra la lista de funciones de agregado que están disponibles para crear expresiones dinámicas.
Función Descripción Ejemplo COUNT(value[, value]*)
Devuelve el número de filas para las que una o más expresiones proporcionadas son no nulas. COUNT(expr1)
COUNT(*)
Devuelve el número total de filas recuperadas, incluidas las filas que contienen un valor nulo. COUNT(*)
MAX(value)
Devuelve el valor máximo del argumento. MAX(expr)
MIN(value)
Devuelve el valor mínimo del argumento. MIN(expr)
SUM(numeric)
Devuelve la suma calculada a partir de los valores de un grupo. SUM(expr1)
También puede utilizar funciones de orden superior (transformación) en una expresión dinámica.
Para crear una expresión dinámica, especifique el atributo o los atributos y la función de agregado.
Si ha seleccionado Permitir selección masiva, utilice
%MACRO_INPUT%
en la expresión para indicar los atributos en los que se aplicará la función.Por ejemplo, si ha utilizado el patrón
DISCOUNT*
para que coincida con los atributos de origenDISCOUNT_RATE
yDISCOUNT_VALUE
, puede especificar una función de agregado comoSUM(numeric)
para aplicar la función en todos los atributos que coincidan con el patrón.%MACRO_INPUT%
sustituye el marcador de posiciónnumeric
en la función:SUM(%MACRO_INPUT%)
Si no ha seleccionado Permitir selección masiva, especifique el atributo en la función.
Por ejemplo, la entidad de datos es PRODUCT_SALES y desea utilizar una función SUM de agregado en el atributo SALES. Puede especificar la función, como
SUM(numeric)
, sustituyendo el marcador de posiciónnumeric
en la función por el nombre de atributo:SUM(PIVOT_1_1.PRODUCT_SALES.SALES)
Puede utilizar un parámetro de expresión para el nombre de función de agregado en la expresión dinámica. Un parámetro de expresión tiene un nombre, un tipo y un valor por defecto.
Por ejemplo, el parámetro de expresión
P_VARCHAR
tiene el tipoVARCHAR
yMIN
como valor por defecto. Puede especificar la función de agregado como:$P_VARCHAR(%MACRO_INPUT%)
$P_VARCHAR(PIVOT_1_1.PRODUCT_SALES.SALES)
En el panel Agregar expresión, seleccione Agregar.
Operador de consulta
El operador de consulta realiza una consulta y una transformación mediante una condición de consulta y datos de dos orígenes, un origen de entrada principal y un origen de entrada de consulta.
La operación de consulta utiliza la condición y un valor en la entrada principal para buscar filas en el origen de consulta. La transformación agrega atributos del origen de consulta al origen principal.
Puede especificar la acción que se debe realizar cuando la consulta de búsqueda devuelve varias filas y ninguna fila. Por ejemplo, puede especificar que la acción omita las filas no coincidentes y devuelva cualquier fila coincidente cuando haya varias filas coincidentes.
La salida resultante es una combinación de ambos orígenes de entrada en función de la condición de consulta, un valor en la entrada principal y las acciones preferidas que se deben realizar. La entrada principal determina el orden de los atributos y las filas de la salida, con los atributos de la entrada principal colocados antes de los atributos de la entrada de consulta.
Considere dos entidades de datos de origen en un flujo de datos. La entidad de datos 1 (PAYMENTS) se define como la entrada principal. La entidad de datos 2 (CUSTOMERS) se define como la entrada de consulta. La condición de consulta se define de la siguiente manera:
LOOKUP_1_1.PAYMENTS.CUSTOMER_ID = LOOKUP_1_2.CUSTOMERS.CUSTOMER_ID
La salida de consulta resultante muestra cómo se combinan y transforman los datos de las dos entradas. Los atributos del origen de consulta se agregan a los atributos de origen principales, con los siguientes comportamientos:
- Si la operación no encuentra un registro coincidente para un valor del origen de consulta, el registro se devuelve con un valor nulo insertado para los atributos de consulta. Por ejemplo, no se han encontrado registros coincidentes para los valores 103, 104 y 105 de CUSTOMER_ID. Por lo tanto, en la salida resultante, se rellena con un valor nulo en los atributos agregados CUSTOMER_ID y NAME.
- Si la operación encuentra varios registros coincidentes para un valor del origen de consulta, se devuelven todos los registros coincidentes.
Entidad de datos 1, origen de entrada principal
PAYMENT_ID | CUSTOMER_ID | AMOUNT |
---|---|---|
1 | 101 | 2500 |
2 | 102 | 1110 |
3 | 103 | 500 |
4 | 104 | 400 |
5 | 105 | 150 |
6 | 102 | 450 |
Entidad de datos 2, origen de entrada de consulta
CUSTOMER_ID | NAME |
---|---|
101 | Peter |
102 | Paul |
106 | Mary |
102 | Pauline |
Salida de consulta
PAYMENT_ID | CUSTOMER_ID | AMOUNT | CUSTOMER_ID | NAME |
---|---|---|---|---|
1 | 101 | 2500 | 101 | Peter |
2 | 102 | 1110 | 102 | Paul |
3 | 103 | 500 | null | null |
4 | 104 | 400 | null | null |
5 | 105 | 150 | null | null |
6 | 102 | 450 | 102 | Paul |
Un operador de consulta utiliza dos orígenes de entrada en un flujo de datos.
En el siguiente procedimiento, se asume que ha agregado y configurado dos operadores de origen.
Utilice el Creador de condiciones para seleccionar visualmente elementos para crear una condición de consulta. También puede introducir una condición manualmente en el editor.
Una condición de consulta permite utilizar un valor en un origen de entrada principal para buscar registros de consulta en un origen de entrada de consulta y devolver las filas que coincidan. Las filas que no tienen una coincidencia se devuelven con valores nulos.
Los elementos que puede utilizar en una condición de consulta incluyen atributos, parámetros y funciones de entrada. Puede arrastrar o hacer doble clic en un elemento de la lista para agregarlo al editor a fin de crear una condición. Puede validar la condición antes de crearla.
De entrada muestra los atributos de los puertos de entrada ascendentes en dos carpetas LOOKUP separadas. Para ver los atributos de cada puerto, amplíe o reduzca la carpeta LOOKUP adecuada. Por ejemplo, LOOKUP_1_1 es la entrada principal, LOOKUP_1_2 es la entrada de consulta; las condiciones de consulta basadas en un valor del atributo de entrada principal ADDRESS_ID podrían ser:
LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = '2001'
LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = LOOKUP_1_2.BANK_CUSTOMER.ADDRESS_ID
Los parámetros son los parámetros de expresión que se han agregado al flujo de datos mediante el Creador de condiciones (operadores de filtro, unión, consulta y división) o el Creador de expresiones (operadores de expresión y agregación). Un parámetro de expresión tiene un nombre, un tipo y un valor por defecto. Consulte Adición de un parámetro de expresión.
Supongamos que desea buscar clientes bancarios de un banco específico. Puede crear un parámetro VARCHAR
con el nombre P_LOOK_UP
y definir el valor por defecto en 2001
, que es el valor bancario específico. A continuación, puede crear la condición de consulta del siguiente modo:
LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = LOOKUP_1_2.BANK_CUSTOMER.ADDRESS_ID AND LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = $P_LOOK_UP
Las funciones son las funciones disponibles en Data Integration que puede utilizar en una condición. Las funciones son operaciones realizadas en argumentos transferidos a la función. Las funciones calculan, manipulan o extraen valores de datos de los argumentos.
A continuación se muestra una lista de funciones que están disponibles para su agregación al crear condiciones:
Función | Descripción | Ejemplo |
---|---|---|
MD5(all data types) | Calcula un total de control MD5 del tipo de dato y devuelve un valor de cadena. | MD5(column_name) |
SHA1(all data types) | Calcula un valor hash SHA-1 del tipo de dato y devuelve un valor de cadena. | SHA1(column_name) |
SHA2(all data types, bitLength) | Calcula un valor hash SHA-2 del tipo de dato y devuelve un valor de cadena. bitLength es un entero. | SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512) . |
ORA_HASH(expr, [max_bucket], [seed_value]) |
Calcula un valor hash para
Oracle aplica la función hash a la combinación de |
|
Función | Descripción | Ejemplo |
---|---|---|
ABS(numeric) | Devuelve la potencia absoluta del valor numeric . | ABS(-1) |
CEIL(numeric) | Devuelve el entero más pequeño que no sea mayor que el valor numeric | CEIL(-1,2) |
FLOOR(numeric) | Devuelve el entero más grande que no sea mayor que el valor numeric | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Devuelve el resto después de dividir numeric1 por numeric2 . | MOD(8,2) |
POWER(numeric1, numeric2) | Eleva numeric1 a la potencia numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Devuelve numeric1 redondeado a numeric2 posiciones decimales. | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Devuelve numeric1 truncado a numeric2 posiciones decimales. | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Convierte una expr a un número, según el valor de format y de locale opcional proporcionados. La configuración regional por defecto es en-US . Etiquetas de idioma soportadas.Patrones de formato soportados:
|
|
Función | Descripción | Ejemplo |
---|---|---|
CURRENT_DATE |
Devuelve la fecha actual. | CURRENT_DATE devuelve la fecha de hoy, como 2023-05-26 |
CURRENT_TIMESTAMP |
Devuelve la hora y la fecha actuales de la zona horaria de la sesión. | CURRENT_TIMESTAMP devuelve la fecha actual y la hora actual, como 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Devuelve la fecha que es el valor number especificado de los días posteriores al valor date especificado. |
DATE_ADD('2017-07-30', 1) devuelve 2017-07-31 |
DATE_FORMAT(expr, format[, locale]) |
Aplica un formato Patrones de formato de fecha soportados:
|
|
DAYOFMONTH(date) |
Devuelve el día del mes de la fecha. | DAYOFMONTH('2020-12-25') devuelve 25 |
DAYOFWEEK(date) |
Devuelve el día de la semana de la fecha. | DAYOFWEEK('2020-12-25') devuelve 6 para Friday. En los Estados Unidos, el domingo se considera 1, el lunes es 2, y así sucesivamente. |
DAYOFYEAR(date) |
Devuelve el día del año de la fecha. | DAYOFYEAR('2020-12-25') devuelve 360 |
WEEKOFYEAR(date) |
Devuelve la semana del año de la fecha. |
|
HOUR(datetime) |
Devuelve el valor de hora de la fecha y hora. | HOUR('2020-12-25 15:10:30') devuelve 15 |
LAST_DAY(date) |
Devuelve el último día del mes de la fecha. | LAST_DAY('2020-12-25') devuelve 31 |
MINUTE(datetime) |
Devuelve el valor de minutos de la fecha y hora. | HOUR('2020-12-25 15:10:30') devuelve 10 |
MONTH(date) |
Devuelve el valor de mes de la fecha. | MONTH('2020-06-25') devuelve 6 |
QUARTER(date) |
Devuelve el trimestre del año en el que se encuentra la fecha. | QUARTER('2020-12-25') devuelve 4 |
SECOND(datetime) |
Devuelve el segundo valor de la fecha y hora. | SECOND('2020-12-25 15:10:30') devuelve 30 |
TO_DATE(string, format_string[, localeStr]) |
Analiza la expresión de cadena con la expresión format_string en una fecha. La configuración regional es opcional. El valor por defecto es en-US . Etiquetas de idioma soportadas.En las expresiones de pipeline,
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Convierte una expr de VARCHAR a un valor de TIMESTAMP, según el valor de format_string y de localeStr opcional proporcionados.En las expresiones de pipeline,
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') devuelve un objeto TIMESTAMP que representa 11am 10:10 Oct 11th, 2020 |
WEEK(date) |
Devuelve el valor de semana de la fecha. |
WEEK('2020-06-25') devuelve 4 |
YEAR(date) |
Devuelve el valor de año de la fecha. | YEAR('2020-06-25') devuelve 2020 |
ADD_MONTHS(date_expr, number_months) |
Devuelve la fecha después de agregar el número de meses especificado a la fecha, registro de hora o cadena especificados con un formato como yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Devuelve el número de meses entre Se devuelve un número entero si ambas fechas son el mismo día del mes o ambas son el último día de sus meses respectivos. De lo contrario, la diferencia se calcula en función de 31 días al mes. |
|
FROM_UTC_TIMESTAMP(time_stamp, time_zone) |
Interpreta una fecha, un registro de hora o una cadena como hora UTC y la convierte en un registro de hora en la zona horaria especificada. Para la cadena, utilice un formato como: El formato de zona horaria es un ID de zona basado en región (por ejemplo, 'área/ciudad' como 'Asia/Seúl' o un desfase de zona horaria (por ejemplo, UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') devuelve 2017-07-14 03:40:00.0 |
TO_UTC_TIMESTAMP(time_stamp, time_zone) |
Convierte una fecha, un registro de hora o una cadena en la zona horaria especificada en un registro de hora UTC. Para la cadena, utilice un formato como: El formato de zona horaria es un ID de zona basado en región (por ejemplo, 'área/ciudad' como 'Asia/Seúl') o un desfase de zona horaria (por ejemplo, UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') devuelve 2017-07-14 01:40:00.0
|
FROM_UNIXTIME(unix_time[, fmt]) |
Convierte la hora o época de Unix especificada en una cadena que representa el registro de hora de ese momento en la zona horaria del sistema actual y en el formato especificado. Nota: La hora de Unix es el número de segundos transcurridos desde el 1 de enero de 1970 00:00:00 UTC. Si se omite |
La zona horaria por defecto es PST en los ejemplos |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Convierte la hora actual o especificada en un registro de hora de Unix en segundos.
Si no se proporciona Si |
La zona horaria por defecto es PST en este ejemplo |
INTERVAL 'year' YEAR[(year_precision)] |
Devuelve un período de tiempo en años. year_precision es el número de dígitos del campo year; está comprendido entre 0 y 9. Si se suprime year_precision, el valor por defecto es 2 (debe ser inferior a 100 años). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Devuelve un período de tiempo en años y meses. Se utiliza para almacenar un período de tiempo utilizando los campos year y month. year_precision es el número de dígitos del campo year; está comprendido entre 0 y 9. Si se suprime year_precision, el valor por defecto es 2 (debe ser inferior a 100 años). |
INTERVAL '100-5' YEAR(3) TO MONTH devuelve un intervalo de 100 años, 5 meses. Debe especificar una precisión de año inicial 3. |
INTERVAL 'month' MONTH[(month_precision)] |
Devuelve un período de tiempo en meses. month_precision es el número de dígitos del campo mes; está comprendido entre 0 y 9. Si se suprime month_precision, el valor por defecto es 2 (debe ser inferior a 100 años). |
INTERVAL '200' MONTH(3) devuelve un intervalo de 200 meses. Debe especificar una precisión de mes 3. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en días, horas, minutos y segundos. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. fractional_seconds_precision es el número de dígitos de la parte fraccional del valor second del campo time; está comprendido entre 0 y 9. |
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) devuelve un intervalo de 11 días, 10 horas, 09 minutos, 08 segundos y 555 milésimas de segundo |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Devuelve un período de tiempo en días, horas y minutos. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '11 10:09' DAY TO MINUTE devuelve un intervalo de 11 días, 10 horas y 09 minutos |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Devuelve un período de tiempo en días y horas. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '100 10' DAY(3) TO HOUR devuelve un intervalo de 100 días y 10 horas |
INTERVAL 'day' DAY[(day_precision)] |
Devuelve un período de tiempo en días. day_precision es el número de dígitos del campo day; está comprendido entre 0 y 9. El valor por defecto es 2. |
INTERVAL '999' DAY(3) devuelve un intervalo de 999 días |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en días, horas, minutos y segundos. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. fractional_seconds_precision es el número de dígitos de la parte fraccional del valor second del campo time; está comprendido entre 0 y 9. |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) devuelve un intervalo de 9 horas, 08 minutos y 76 666 666 segundos |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Devuelve un período de tiempo en horas y minutos. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '09:30' HOUR TO MINUTE devuelve un intervalo de 9 horas y 30 minutos |
INTERVAL 'hour' HOUR[(hour_precision)] |
Devuelve un período de tiempo en horas. hour_precision es el número de dígitos del campo hora; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '40' HOUR devuelve un intervalo de 40 horas |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Devuelve un período de tiempo en minutos. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. |
INTERVAL '15' MINUTE devuelve un intervalo de 15 minutos |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en minutos y segundos. minute_precision es el número de dígitos del campo minuto; está comprendido entre 0 y 2. El valor por defecto es 2. fractional_seconds_precision es el número de dígitos de la parte fraccional del valor second del campo time; está comprendido entre 0 y 9. |
INTERVAL '15:30' MINUTE TO SECOND devuelve un intervalo de 15 minutos y 30 segundos |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Devuelve un período de tiempo en segundos. fractional_seconds_precision es el número de dígitos en la parte fraccional del campo second; oscila entre 0 y 9. El valor por defecto es 3. |
INTERVAL '15.678' SECOND devuelve un intervalo de 15 678 segundos |
Función | Descripción | Ejemplo |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Devuelve el valor evaluado en la fila que es la primera fila del marco de ventana. | FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) devuelve el primer valor de BANK_ID en una ventana en la que las filas se calculan como la fila actual y 1 fila después de esa fila, particionada por BANK_ID y en orden ascendente por BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Devuelve el valor evaluado en la fila en un desplazamiento determinado antes de la fila actual dentro de la partición. Si no existe dicha fila, se devuelve el valor por defecto. Tanto el desplazamiento como el valor por defecto se evalúan con respecto a la fila actual. Si se omite, el desplazamiento se define por defecto en 1 y por defecto en NULL. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) devuelve el valor de BANK_ID de la segunda fila antes de la fila actual, particionado por BANK_ID y en orden descendente por BANK_NAME . Si no existe dicho valor, se devuelve hello . |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Devuelve el valor evaluado en la fila que es la última fila del marco de ventana. | LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) devuelve el último valor de BANK_ID en una ventana en la que las filas se calculan como la fila actual y 1 fila después de esa fila, particionado por BANK_ID y en orden ascendente por BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Devuelve el valor evaluado en la fila en un desplazamiento determinado después de la fila actual dentro de la partición. Si no existe dicha fila, se devuelve el valor por defecto. Tanto el desplazamiento como el valor por defecto se evalúan con respecto a la fila actual. Si se omite, el desplazamiento se define por defecto en 1 y por defecto en NULL. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) devuelve el valor de BANK_ID de la segunda fila después de la fila actual, particionado por BANK_ID y en orden ascendente por BANK_NAME . Si no existe dicho valor, se devuelve hello . |
RANK() OVER([ partition_clause ] order_by_clause) |
Devuelve el rango de la fila actual con intervalos, contando desde 1. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) devuelve el rango de cada fila dentro del grupo de partición BANK_ID , en orden ascendente por BANK_NAME . |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Devuelve el número único de la fila actual dentro de su partición, contando desde 1. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) devuelve el número de fila único de cada fila dentro del grupo de partición BANK_ID , en orden ascendente por BANK_NAME . |
Funciones | Descripción | Ejemplo |
---|---|---|
CAST(value AS type) | Devuelve el valor especificado en el tipo especificado. | CAST("10" AS INT) devuelve 10 |
CONCAT(string, string) | Devuelve los valores combinados de cadenas o columnas. | CONCAT('Oracle','SQL') devuelve OracleSQL |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Devuelve los valores combinados de cadenas o columnas utilizando el separador especificado entre las cadenas o columnas. Se necesita un separador y debe ser una cadena. Se debe proporcionar al menos una expresión después del separador. Por ejemplo: |
CONCAT_WS('-', 'Hello', 'Oracle') devuelve Hello-Oracle
Si un secundario de la función es una matriz, la matriz se simplifica:
|
INITCAP(string) | Devuelve la cadena con la primera letra de cada palabra en mayúsculas, mientras que el resto de letras están en minúsculas, y cada palabra está delimitada por un espacio en blanco. | INITCAP('oRACLE sql') devuelve Oracle Sql |
INSTR(string, substring[start_position]) | Devuelve el índice (basado en 1) de la primera ocurrencia de substring en string . | INSTR('OracleSQL', 'SQL') devuelve 7 |
LOWER(string) | Devuelve la cadena con todas las letras cambiadas a minúsculas. | LOWER('ORACLE') devuelve oracle |
LENGTH(string) | Devuelve la longitud de caracteres de la cadena o el número de bytes de datos binarios. La longitud de la cadena incluye los espacios finales. | LENGTH('Oracle') devuelve 6 |
LTRIM(string) | Devuelve la cadena con los espacios iniciales eliminados de la izquierda. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Devuelve el argumento que no es nulo. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Busca y extrae la cadena que coincide con un patrón de expresión regular de la cadena de entrada. Si se ha proporcionado el índice de grupo de captura opcional, la función extrae el grupo específico. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) devuelve 22 |
REPLACE(string, search, replacement) | Sustituye todas las ocurrencias de search por replacement .Si no se encuentra Si no se especifica | REPLACE('ABCabc', 'abc', 'DEF') devuelve ABCDEF |
RTRIM(string) | Devuelve la cadena con los espacios iniciales eliminados de la derecha. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Devuelve la subcadena que empieza en la posición. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) devuelve rac |
Para números, TO_CHAR(expr) y para fechas TO_CHAR(expr, format[, locale]) | Convierte números y fechas en cadenas. Para los números, no es necesario ningún formato. Para las fechas, utilice el mismo formato que DATE_FORMAT descrito en Funciones de fecha y hora. La configuración regional por defecto es en-US . Consulte las etiquetas de idioma soportadas.En las expresiones de pipeline,
| Ejemplo de número: Ejemplo de fecha: |
UPPER(string) | Devuelve una cadena con todas las letras cambiadas a mayúsculas. | UPPER('oracle') devuelve ORACLE |
LPAD(str, len[, pad]) | Devuelve una cadena que está rellena a la izquierda con caracteres especificados a una longitud determinada. Si se deja el carácter pad, el valor por defecto es un espacio. | LPAD('ABC', 5, '*') devuelve '**ABC' |
RPAD(str, len[, pad]) | Devuelve una cadena que está rellenada a la derecha con caracteres especificados a una longitud determinada. Si se deja el carácter pad, el valor por defecto es un espacio. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Función | Descripción | Ejemplo |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Devuelve el valor para el que se cumple una condición. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END devuelve ABC si 1> 0 , de lo contrario, devuelve XYZ |
AND | Operador lógico AND. Devuelve true si ambos operandos son verdaderos; de lo contrario, devuelve false. | (x = 10 AND y = 20) devuelve "true" si x es igual a 10 e y es igual a 20. Si uno de las dos no es verdadero, devuelve "false" |
OR | Operador lógico OR. Devuelve true si cualquiera de los operandos es true o ambos son true; de lo contrario, devuelve false. | (x = 10 OR y = 20) devuelve "false" si x no es igual a 10 y, también, si y no es igual a 20. Si cualquiera de ellos es verdadero, devuelve "true" |
NOT | Operador lógico NOT. | |
LIKE | Realiza una coincidencia de patrones de cadena, si string1 coincide con el patrón de string2. | |
= | Comprueba la igualdad. Devuelve true si expr1 es igual a expr2; de lo contrario, devuelve false. | x = 10 devuelve "true" cuando el valor de x es 10; de lo contrario, devuelve "false" |
!= | Comprueba la desigualdad. Devuelve true si expr1 no es igual a expr2; de lo contrario, devuelve false. | x != 10 devuelve "false" si el valor de x es 10; de lo contrario, devuelve "true" |
> | Comprueba si una expresión es mayor que. Devuelve true si expr1 es mayor que expr2. | x > 10 devuelve "true" si el valor de x es mayor que 10; de lo contrario, devuelve "false" |
>= | Comprueba si una expresión es mayor o igual que. Devuelve true si expr1 es mayor o igual que expr2. | x > =10 devuelve "true" si el valor de x es mayor o igual que 10; de lo contrario, devuelve "false" |
< | Comprueba si una expresión es menor que. Devuelve true si expr1 es menor que expr2. | x < 10 devuelve "true" si el valor de x es menor que 10; de lo contrario, devuelve "false" |
<= | Comprueba si una expresión es menor o igual que. Devuelve true si expr1 es menor o igual que expr2. | x <= 10 devuelve "true" si el valor de x es menor que 10; de lo contrario, devuelve "false" |
|| | Concatena dos cadenas. | 'XYZ' || 'hello' devuelve 'XYZhello' |
BETWEEN | Evalúa un rango. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Prueba si una expresión coincide con una lista de valores. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Función | Descripción | Ejemplo |
---|---|---|
NUMERIC_ID() | Genera un identificador único universal que es un número de 64 bits para cada fila. | NUMERIC_ID() devuelve, por ejemplo, 3458761969522180096 y 3458762008176885761 |
ROWID() | Genera números de 64 bits monótonamente. | ROWID() devuelve, por ejemplo, 0 , 1 , 2 , etc. |
UUID() | Genera un identificador único universal que es una cadena de 128 bits para cada fila. | UUID() devuelve, por ejemplo, 20d45c2f-0d56-4356-8910-162f4f40fb6d |
MONOTONICALLY_INCREASING_ID() |
Genera números enteros únicos que aumentan monótonamente 64 bits que no son números consecutivos. | MONOTONICALLY_INCREASING_ID() returns for example, 8589934592 and 25769803776 |
Función | Descripción | Ejemplo |
---|---|---|
COALESCE(value, value [, value]*) | Devuelve el primer argumento no nulo, si existe; de lo contrario, devuelve null. | COALESCE(NULL, 1, NULL) devuelve 1 |
NULLIF(value, value) | Devuelve null si los dos valores son iguales entre sí; de lo contrario, devuelve el primer valor. | NULLIF('ABC','XYZ') devuelve ABC |
Función | Descripción | Ejemplo |
---|---|---|
SCHEMA_OF_JSON(string) | Analiza una cadena JSON e infiere el esquema en formato DDL. |
|
FROM_JSON(column, string) | Analiza una columna que contiene una cadena JSON en uno de los siguientes tipos, con el esquema especificado.
|
|
TO_JSON(column) | Convierte una columna que contiene un tipo Struct o Array of Structs, o Map o Array of Map en una cadena JSON. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) devuelve una cadena JSON {"s1":[1,2,3],"s2":{"key":"value"}} |
TO_MAP(string,column[,string,column]*) | Crea una nueva columna de tipo Asignación. Las columnas de entrada se deben agrupar como pares clave-valor. Las columnas de clave de entrada no pueden ser nulas y todas deben tener el mismo tipo de datos. Todas las columnas de valor de entrada deben tener el mismo tipo de datos. |
|
TO_STRUCT(string,column[,string,column]*) | Crea una nueva columna de tipo Struct. Las columnas de entrada se deben agrupar como pares clave-valor. |
|
TO_ARRAY(column[,column]*) | Crea una nueva columna como tipo Array. Todas las columnas de entrada deben tener el mismo tipo de datos. |
|
Los operadores de flujo de datos que soportan la creación de expresiones y tipos de dato jerárquicos pueden utilizar funciones de orden superior.
Los operadores soportados son:
-
Agregar
-
Expresión
-
Filtro
-
Entrar
-
Consulta
-
Dividir
-
Girar
Función | Descripción | Ejemplo |
---|---|---|
TRANSFORM(column, lambda_function) | Toma una matriz y una función anónima, y configura una nueva matriz aplicando la función a cada elemento y asignando el resultado a la matriz de salida. | Para una matriz de entrada de enteros [1, 2, 3] , TRANSFORM(array, x -> x + 1) devuelve una nueva matriz de [2, 3, 4] . |
TRANSFORM_KEYS(column, lambda_function) | Toma una asignación y una función con 2 argumentos (clave y valor), y devuelve una asignación en la que las claves tienen el tipo del resultado de la función lambda, y los valores tienen el tipo de los valores de asignación de columna. | Para una asignación de entrada con claves enteras y valores de cadena de {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} , TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) devuelve una nueva asignación de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} . |
TRANSFORM_VALUES(column, lambda_function) | Toma un mapa y una función con 2 argumentos (clave y valor), y devuelve un mapa en el que los valores tienen el tipo del resultado de las funciones lambda, y las claves tienen el tipo de las claves del mapa de columnas. | Para una asignación de entrada con claves de cadena y valores de cadena de {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} , TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) devuelve una nueva asignación de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Solo el operador de expresión soporta Toma una matriz y la ordena según la función dada que toma 2 argumentos. La función debe devolver -1, 0 o 1 en función de si el primer elemento es menor que, igual a o mayor que el segundo elemento. Si se omite la función, la matriz se ordena en orden ascendente. |
La matriz devuelta es: [1,5,6] |
Operador de función
Utilice el operador de función para llamar a Oracle Cloud Infrastructure Functions desde Data Integration.
Para estructuras de datos complejas como Map, Array y Composite (Struct), solo está soportado actualmente el formato de serialización JSON.
Antes de utilizar OCI Functions desde un flujo de datos en Data Integration, asegúrese de conocer las dependencias y de haber completado las tareas previas necesarias.
La función a la que desea llamar se debe desplegar en OCI Functions. La función se puede escribir en cualquier idioma.
Utilice la siguiente lista de comprobación de tareas para asegurarse de que tiene la información y la configuración necesarias para utilizar el operador de función con OCI Functions.
Tarea | Requisito |
---|---|
Configuración para utilizar y acceder a OCI Functions | En este tema se asume que el arrendamiento y el entorno de desarrollo ya están configurados para desplegar funciones en OCI Functions. Consulte Preparación de funciones. Solo las funciones desplegadas en OCI Functions se pueden utilizar con el operador de función en Data Integration. |
Cree políticas para controlar la llamada y la gestión de funciones. | En este tema se asume que usted o el administrador del arrendamiento ya han creado las políticas necesarias de Oracle Cloud Infrastructure. Consulte Creating Policies to Control Access to Network and Function-Related Resources. En un entorno de producción, puede que desee restringir los usuarios que puedan llamar a funciones en una aplicación específica o que llamen solo a una función específica. Por ejemplo, para restringir que los usuarios llamen a funciones de un espacio de trabajo específico, introduzca las sentencias de política con el siguiente formato:
Para que los usuarios solo puedan llamar a una función específica en un espacio de trabajo:
Consulte Control de acceso para llamar y gestionar funciones. |
Cree una aplicación en OCI Functions. | Una aplicación es una agrupación lógica de funciones. En una aplicación, especifique entre una y tres subredes en las que ejecutar funciones. Las funciones que se ejecutan en una aplicación están aisladas de funciones que se ejecutan en otra aplicación. Consulte Creación de aplicaciones (en Functions). |
Despliegue una función en OCI Functions. |
Para que la función de OCI Functions funcione con el operador de función Data Integration en un flujo de datos, la función no debe leer ni escribir ningún identificador con un carácter de espacio. Al desplegar una función en OCI Functions con la CLI de Fn Project, la función se crea como una imagen de Docker y se transfiere a un registro de Docker especificado. Consulte Creación y despliegue de funciones. |
Recopile la información necesaria para utilizar la función desplegada con el operador de función. | Al agregar y configurar un operador de función en un flujo de datos de Data Integration, debe saber lo siguiente:
|
Un operador de función permite utilizar una función desplegada en OCI Functions para procesar los datos de un origen de entrada. Están soportados los tipos de datos principales y complejos.
Especifique la unidad de entrada de la función y los atributos de entrada y salida del operador de función que leer y escribir. A continuación, asigne manualmente los atributos de origen a los atributos de entrada.
Actualmente, solo está soportado el formato de serialización JSON para estructuras de datos complejas como mapa, matriz y compuesto (estructura).
En el siguiente procedimiento se asume que ha agregado y configurado un operador de origen con la entidad de datos que desea utilizar con la función.
La función que desea utilizar con un operador de función se debe desplegar en una aplicación en Oracle Cloud Infrastructure Functions.
- En el lienzo, seleccione el operador de función.
- En el separador Detalles del panel Propiedades, en Función de OCI, haga clic en Seleccionar.
- En el panel, seleccione el compartimento que tiene la aplicación OCI Functions en la que se ha desplegado la función que desea utilizar.
- Seleccione la aplicación en OCI Functions que tiene la función desplegada.
- En la sección Función de OCI, seleccione la función.
- Seleccione OK (Aceptar).
Después de seleccionar una función desplegada, especifique las propiedades que definen los datos de entrada para la función que se va a procesar, los campos de la configuración de la función y los datos de salida que devuelve la función.
No utilice un carácter de espacio en el nombre de identificador para un atributo de entrada, un atributo de salida o un campo de función. Además, no se permiten nombres como "Element", "Key" y "Value".
- En Propiedades de función, seleccione Agregar propiedad.
- En el panel, seleccione el tipo de propiedad que desea especificar.
- Atributos de entrada: unidad de entrada para el operador. Especifique uno o más atributos para representar los atributos de entrada para la función que se va a procesar. Los atributos de entrada se asignan a los atributos de entrada desde el origen de la entidad de datos.
- Configuración de función: especifique uno o más campos de función que definan la unidad de entrada de la función. Un campo tiene un nombre y un valor. El valor de un campo especifica un atributo de entrada.
- Atributos de salida: unidad de salida para el operador. Especifique cero o más atributos para representar la salida de la función después de procesar los datos. Agregue un atributo de salida para cada campo de función que desee en la salida. Los operadores descendentes posteriores pueden utilizar los atributos de salida.
- Introduzca un nombre para la propiedad en el campo Identificador. No utilice un carácter de espacio en el nombre para un atributo de entrada, un atributo de salida o un campo de función.
- Seleccione el tipo de datos de la propiedad.
Para un tipo de dato primitivo, según el Tipo y el Tipo de datos de la propiedad que está especificando, especifique los siguientes campos y otros campos aplicables.
- L largo: para un atributo de entrada o salida, introduzca una longitud. Por ejemplo, especifique una longitud para un tipo de datos numérico o varchar.
- Valor: para un campo de función, introduzca un valor que coincida con un atributo de entrada.
Para un tipo de dato complejo Map, especifique el par clave-valor para un elemento map. Seleccione Agregar Tipo de Datos para seleccionar el Tipo de Datos de Clave y El Tipo de Datos de Valor.
- Clave: seleccione solo entre tipos de datos primitivos.
- Valor: seleccione entre tipos de datos primitivos y complejos.
Para un Tipo de Datos Complejo Array, seleccione Agregar Tipo de Datos para especificar el Tipo de Datos Element. Puede seleccionar entre tipos de datos primitivos y complejos.
Para un tipo de dato compuesto (Struct), especifique el esquema secundario o los esquemas secundarios. Para agregar un esquema secundario, seleccione el símbolo + junto al nombre del esquema principal.
En el panel Agregar campo para un esquema secundario, introduzca el identificador y seleccione un Tipo de datos. Puede seleccionar entre tipos de datos primitivos y complejos. Seleccione Agregar para agregar el esquema secundario.
Vuelva a seleccionar el símbolo + si desea agregar más de un esquema secundario al esquema principal.
Para editar o suprimir un esquema secundario, utilice el menú Acciones (
) al final de la fila.
No puede suprimir el elemento de esquema principal.
- En el panel Agregar propiedad, seleccione Agregar.
- Repita los pasos para agregar las propiedades que necesita para definir la entrada de función, los campos de función y la salida de función.
Operador de simplificación
Utilice el operador de simplificación para transformar los datos jerárquicos en un formato simplificado para utilizarlos con otros datos relacionales. El proceso de aplanamiento también se conoce como desnormalización o desanidamiento.
Los formatos de archivo jerárquicos que puede desnormalizar son:
- JSON y JSON multilínea
- Avro
- Parquet
Actualmente, el tipo de dato jerárquico soportado que puede anular la anidación es Matriz. Solo puede seleccionar un nodo de matriz en un juego de datos jerárquico para simplificar. La estructura de datos se simplifica desde la raíz hasta el nodo de matriz seleccionado y se presenta en un formato simplificado. Si el juego de datos tiene otros nodos de matriz, tiene la opción de convertirlos en cadenas.
Puede configurar los atributos o campos que se incluirán en la salida simplificada definiendo Preferencias de proyección.
Las preferencias de proyección son valores para el formato, el número y el tipo de atributos proyectados que se incluirán en la salida después de ajustar los datos entrantes.
Data Integration proporciona cuatro configuraciones de preferencias de proyecto seleccionadas por defecto, lo que da como resultado una salida proyectada que tiene lo siguiente:
- Matrices de índices
- Todos los atributos hasta el atributo seleccionado para la simplificación
- Valores nulos para los atributos que faltan en las matrices siguientes
- Linaje de nombre principal en los nombres de atributo
Para comprender las preferencias de proyección que puede configurar, utilice los siguientes temas con el ejemplo de estructura de datos JSON.
Ejemplo de estructura de datos JSON
id
vehicle[]
make
model
insurance{}
company
policy_number
maintenance[]
date
description[]
dealerdetails[]
servicestation1[]
dealeraddress[]
city
state
contact
dealername
servicestation2[]
dealeraddress[]
city
state
contact
dealername
El valor de preferencia de proyección Crear índices de matriz de proyecto permite controlar si se deben incluir atributos de índice para matrices en la salida simplificada.
El atributo index representa el índice de una matriz. Supongamos que la matriz es ["a","b","c"]
, que el índice de "a" es 0, que el índice de "b" es 1 y que el índice de "c" es 2.
Por defecto, Data Integration crea un atributo con el sufijo _INDEX
para el nodo de matriz en el que seleccione simplificar datos. El tipo de dato de un atributo de índice de matriz es Entero.
Los atributos de índice también se crean para los nodos de matriz principal del nodo de matriz seleccionado. La operación de simplificación afecta a todos los nodos de matriz principal de la estructura jerárquica desde la raíz hasta el nodo seleccionado. Si un nodo de matriz principal afectado tiene matrices hermanas, no se crean atributos de índice para esos nodos de matriz hermano.
En el ejemplo de estructura de datos de JSON, si selecciona la matriz dealeraddress
que está en servicestation2
para la simplificación, Data Integration crea cinco atributos de índice de matriz: uno para el nodo de matriz seleccionado y cuatro para los nodos principales afectados por la operación de simplificación.
Después de la simplificación, los atributos de la estructura simplificada son los siguientes:
id
vehicle_INDEX
vehicle_make
vehicle_model
vehicle_insurance
company
policy_number
vehicle_maintenance_INDEX
vehicle_maintenance_date
vehicle_maintenance_description
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation1
dealeraddress
city
state
contact
dealername
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
vehicle_maintenance_servicestation2_dealeraddress_dealername
No se ha creado un atributo de índice de matriz para servicestation1
porque el nodo de matriz es hermano del nodo principal afectado servicestation2
. Del mismo modo, no se crea un atributo de índice para description
porque el nodo de matriz es hermano del nodo principal afectado dealerdetails
.
Si no selecciona la preferencia de proyección Crear e índices de matriz de proyecto, los atributos de la estructura simplificada son los siguientes:
id
vehicle_make
vehicle_model
vehicle_insurance
company
policy_number
vehicle_maintenance_date
vehicle_maintenance_description
vehicle_maintenance_servicestation1
dealeraddress
city
state
contact
dealername
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
vehicle_maintenance_servicestation2_dealeraddress_dealername
La configuración de la preferencia de proyección Retener todos los atributos hasta la matriz simplificada permite controlar si se deben incluir en la salida simplificada los atributos que no forman parte de las matrices simplificadas.
Por defecto, Data Integration muestra todos los atributos de la raíz a la matriz seleccionada, incluidas las matrices hermanas que no se ven afectadas por la simplificación.
En el ejemplo de estructura de datos JSON, si no selecciona la preferencia de proyección Retener todos los atributos hasta la matriz simplificada, los atributos de la estructura simplificada son los siguientes:
id
vehicle_INDEX
vehicle_maintenance_INDEX
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
La configuración de la preferencia de proyección Producir una sola fila con valores nulos para la matriz principal que falta permite controlar si se omitirán las filas que no tienen los atributos afectados por la simplificación.
El efecto de la configuración Producir una sola fila con valores nulos para la matriz principal que falta solo se ve en el separador Datos. Por defecto, Data Integration muestra valores nulos para los atributos que faltan en las matrices siguientes.
Por ejemplo, la siguiente es una salida proyectada con valores nulos:
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |0 |Laptop |20 |
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |1 |Charger |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |0 |Mouse |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |1 |Keyboard |1 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |0 |Laptop |20 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |1 |Charger |3 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |0 |Chair |4 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |1 |Lamp |2 |
|Company3|Bellevue|null |true |[...]|0 |4 |123.34 |null |null |null |
|Company4|Kirkland|null |null |null |null |null |null |null |null |null |
Si no selecciona la opción, se omiten las filas y la salida prevista es:
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |0 |Laptop |20 |
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |1 |Charger |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |0 |Mouse |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |1 |Keyboard |1 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |0 |Laptop |20 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |1 |Charger |3 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |0 |Chair |4 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |1 |Lamp |2 |
El valor de preferencia de proyección Retener linaje de nombre principal en nombres de atributo permite controlar si se deben incluir los nombres principales en los nombres de atributo secundarios.
Por defecto, Data Integration crea nombres de nodo secundario con sus nombres de nodo principal.
En el ejemplo de estructura de datos JSON, los atributos con nombres principales en la estructura simplificada son los siguientes (suponiendo que las matrices hermanas no afectadas por la simplificación se excluyen en la salida):
id
vehicle_INDEX
vehicle_maintenance_INDEX
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
Si no selecciona la preferencia de proyección Retener linaje de nombre principal en nombres de atributo, los atributos son los siguientes:
id
vehicle_INDEX
maintenance_INDEX
dealerdetails_INDEX
servicestation2_INDEX
dealeraddress_INDEX
city
state
contact
En el siguiente procedimiento se asume que ha agregado un operador de origen y configurado el operador en un origen de Object Storage con tipos de dato complejos, como un archivo JSON.
Después de seleccionar un atributo complejo para la simplificación, puede haber otros nodos de matriz en la estructura simplificada.
Con los otros nodos de matriz en una estructura simplificada, puede convertir una matriz de tipos de dato primitivos o una matriz de estructuras en una cadena. Actualmente, el formato soportado de una cadena de conversión es JSON.
En función de los datos, el tipo de dato de una cadena de conversión es VARCHAR o BLOB. Puede cambiar una cadena de conversión de VARCHAR a CLOB y, a la inversa, de CLOB a VARCHAR.
En el siguiente procedimiento se asume que ha agregado un operador de simplificación y seleccionado un atributo complejo para crear una estructura de datos simplificada.
El siguiente procedimiento supone que ha seleccionado un nodo de matriz para convertirlo en una cadena, si procede.
Al configurar un operador de simplificación en un flujo de datos, puede revertir una simplificación borrando la ruta de acceso Planificar por.
Operador de Función de Tabla
Utilice el operador de función de tabla para agregar funciones de tabla que devuelvan datos en forma de tablas.
Actualmente, solo se pueden seleccionar funciones de tabla incorporadas de una lista. Las funciones de tabla que proporciona el operador de función de tabla incluyen cubo, análisis de tabulación cruzada, elementos frecuentes, acumulación y SQL de Spark. Cada función de tabla incorporada tiene campos predefinidos que se configuran para devolver la recopilación de datos deseada. La lógica compleja se puede consolidar en una sola función que devuelve juegos de datos específicos. La parametrización de los campos permite flexibilidad en el ajuste de la lógica.
Un operador de función de tabla se puede conectar con cualquier otro operador dentro de un flujo de datos. Por lo tanto, se puede utilizar un operador de función de tabla como origen de datos, operador de flujo medio y destino.
A continuación, se muestra una lista de las funciones de tabla incorporadas soportadas por el operador de función de tabla.
Persiste y almacena en caché un juego de datos según el almacenamiento de memoria proporcionado level
.
Devuelve un nuevo conjunto de datos en el conjunto de datos distribuido resistente (RDD) almacenado en caché.
Parámetro | Descripción |
---|---|
level |
Almacenamiento de memoria para utilizar:
|
Calcula una tabla de frecuencia o una tabla de contingencia por pares a partir de valores distintos de las dos columnas proporcionadas.
El número de valores distintos para cada columna debe ser menor que 1e4.
Devuelve un marco de datos que contiene la tabla de contingencia. En la tabla de contingencias:
- El nombre de la primera columna es
col1_col2
, dondecol1
es la primera columna ycol2
es la segunda columna antes de la transformación. La primera columna de cada fila son los valores distintos decol1
. - Los demás nombres de columna son los valores distintos de
col2
. - Los recuentos se devuelven como tipo
long
. - A los pares sin incidencias se les asigna cero como recuento.
- El número máximo de pares distintos de cero es 1e6.
- Los elementos nulos se sustituyen por
null
.
Parámetro | Descripción |
---|---|
col1 |
Nombre de la primera columna. Consulte la nota que aparece después de esta tabla para ver las limitaciones. Los elementos distintos de |
col2 |
Nombre de la segunda columna. Consulte la nota que aparece después de esta tabla para ver las limitaciones. Distintos elementos de |
Solo se permiten los siguientes caracteres en un nombre de columna:
- letras minúsculas y mayúsculas
a-z
A-Z
- Números
0-9
- guión bajo
_
Ejemplo
Supongamos que col1
es age
y col2
es salary
.
Antes de la transformación:
+---+------+
|age|salary|
+---+------+
|1 |100 |
|1 |200 |
|2 |100 |
|2 |100 |
|2 |300 |
|3 |200 |
|3 |300 |
+---+------+
Después de la transformación:
+----------+---+---+---+
|age_salary|100|200|300|
+----------+---+---+---+
|2 |2 |0 |1 |
|1 |1 |1 |0 |
|3 |0 |1 |1 |
+----------+---+---+---+
Genera un cubo multidimensional de todas las combinaciones posibles mediante la lista de columnas proporcionada y los cálculos en las expresiones de función de agregación proporcionadas.
Las expresiones admiten las siguientes funciones de agregación:
AVG
COUNT
MEAN
MAX
MIN
SUM
Devuelve un marco de datos después de la transformación del cubo.
Parámetro | Descripción |
---|---|
cubeColumns |
Lista de columnas, separadas por comas, por las que se genera el cubo multidimensional. |
aggExpressions |
Expresiones de función de agregación que se van a realizar en las columnas. Por ejemplo: |
Ejemplo
Antes de la transformación:
+----------+-----+-------+------+---+
|department|group|region |salary|age|
+----------+-----+-------+------+---+
|Eng |A |local |1000 |10 |
|Art |B |foreign|2000 |11 |
|Sport |C |local |1500 |13 |
|Eng |A |foreign|800 |19 |
|Art |A |foreign|3000 |30 |
|Eng |E |foreign|1000 |21 |
|Art |D |local |1000 |32 |
|Sport |C |local |1000 |28 |
+----------+-----+-------+------+---+
Si cubeColumns
es department, region
y aggExpressions
essalary -> avg, age -> max
(cálculo del salario medio y la edad máxima), el cubo de transformación posterior es:
+----------+-------+-----------------+--------+
|department|region |avg(salary) |max(age)|
+----------+-------+-----------------+--------+
|Eng |foreign|900.0 |21 |
|Sport |null |1250.0 |28 |
|Art |null |2000.0 |32 |
|Eng |null |933.3333333333334|21 |
|null |local |1125.0 |32 |
|Art |foreign|2500.0 |30 |
|null |foreign|1700.0 |30 |
|Eng |local |1000.0 |10 |
|null |null |1412.5 |32 |
|Sport |local |1250.0 |28 |
|Art |local |1000.0 |32 |
+----------+-------+-----------------+--------+
Genera datos sintéticos mediante el contenido y el formato de archivo proporcionados. Los formatos de archivo admitidos son:
- CSV
- JSON
Devuelve una entidad de datos. El origen de datos sintético se puede utilizar en pruebas unitarias de pipeline en las que no se utilizan ni se mueven datos reales.
Parámetro | Descripción |
---|---|
format |
Tipo de archivo. Los valores soportados son:
|
content |
Contenido del archivo para el formato especificado. |
Ejemplo
Ejemplo de contenido CSV:
co1,co2,co3
1,B,3
A,2,C
Resultado de generación de datos:
+---+---+---+
|co1|co2|co3|
+---+---+---+
|1 |B |3 |
+---+---+---+
|A |2 |C |
+---+---+---+
Busca duplicados en la lista de columnas o columnas proporcionadas y devuelve un nuevo juego de datos con las filas duplicadas eliminadas.
Parámetro | Descripción |
---|---|
columns |
Un nombre de columna o una lista separada por comas de nombres de columna. |
Ejemplo
Antes de la transformación:
+---+---+
|a |b |
+---+---+
|1 |2 |
|3 |4 |
|1 |3 |
|2 |4 |
+---+---+
Si columns
es a
, el juego de datos después de la transformación es:
+---+---+
|a |b |
+---+---+
|1 |2 |
|3 |4 |
|2 |4 |
+---+---+
Busca elementos frecuentes en la columna o la lista de columnas proporcionadas con la frecuencia mínima especificada.
El algoritmo de recuento de elementos frecuentes propuesto por Karl et al. se utiliza para encontrar elementos frecuentes. Los falsos positivos son posibles.
Devuelve un marco de datos con una matriz de elementos frecuentes para cada columna.
Parámetro | Descripción |
---|---|
freqItems |
Nombre de columna o lista separada por comas de nombres de columna para los que desea buscar elementos frecuentes. |
support |
Frecuencia mínima para considerar frecuente un ítem. El valor debe ser mayor que 1e-4 (valor decimal de Por ejemplo, |
Ejemplo
Antes de la transformación:
+-------+--------------+
|user_id|favorite_fruit|
+-------+--------------+
| 1| apple|
| 2| banana|
| 3| apple|
| 4| orange|
| 5| banana|
| 6| banana|
| 7| apple|
+-------+--------------+
Si freqItems
es favorite_fruit
y support
es 0.6
, el marco de datos devuelto después de la transformación es:
+------------------------+
|favorite_fruit_freqItems|
+------------------------+
| [banana]|
+------------------------+
Elimina las filas que contienen valores nulos o NaN en la lista de columnas o columnas proporcionadas.
Devuelve un marco de datos que excluye las filas.
Parámetro | Descripción |
---|---|
how |
Cómo determinar si se va a borrar una fila. Los valores soportados son:
El parámetro |
cols |
Un nombre de columna o una lista separada por comas de nombres de columna. |
minNonNulls |
Número mínimo de valores no nulos y no NaN que puede contener una fila. Borra las filas que contienen menos del mínimo especificado. El parámetro |
Ejemplo
Antes de la transformación:
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Alice |25 |
|2 |null |28 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Si how
es any
y cols
es name
, el marco de datos devuelto después de la transformación es:
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Alice |25 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Al utilizar el parámetro how
con el valor all
, se borra una fila solo si todos sus valores son nulos. Por ejemplo, antes de la transformación:
+----+--------+----+
| id| name| age|
+----+--------+----+
| 1|John Doe| 30|
| 2| null|null|
| 3|Jane Doe| 25|
| 4|Jake Doe|null|
|null| null|null|
+----+--------+----+
Después de la transformación:
+---+--------+----+
| id| name| age|
+---+--------+----+
| 1|John Doe| 30|
| 2| null|null|
| 3|Jane Doe| 25|
| 4|Jake Doe|null|
+---+--------+----+
Sustituye los valores nulos y devuelve un marco de datos mediante los valores sustituidos.
Parámetro | Descripción |
---|---|
replacement |
Asignación de clave-valor que se utilizará para sustituir valores nulos. La clave es un nombre de columna. El valor es un valor de sustitución. La clave apunta al valor de sustitución. Por ejemplo: Se convierte un valor de sustitución en el tipo de dato de la columna. Un valor de sustitución debe ser del siguiente tipo:
|
Ejemplo
Antes de la transformación:
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Alice |25 |
|2 |null |28 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Si la asignación de clave-valor es la siguiente:
id -> 3
name -> unknown
age -> 10
Después de la transformación:
+---+-------+---+
|id |name |age|
+---+-------+---+
|1 |Alice |25 |
|2 |unknown|28 |
|3 |Bob |10 |
|4 |Charlie|30 |
+---+-------+---+
Sustituye un valor por otro valor en la columna o columnas proporcionadas haciendo coincidir las claves en la clave y la asignación de valores de sustitución proporcionadas.
Devuelve un nuevo marco de datos que contiene la transformación sustituida.
Parámetro | Descripción |
---|---|
cols |
Nombre de columna o lista separada por comas de nombres de columna sobre los que aplicar valores de sustitución. Si |
replacement |
Asignación de clave-valor de sustitución que se va a utilizar. La clave es un valor para sustituir. El valor es el valor de sustitución. El valor de asignación puede tener valores nulos. La clave apunta al valor de sustitución. Por ejemplo: El par de clave y valor de sustitución debe tener el mismo tipo. Solo se admiten los siguientes tipos:
|
Ejemplo
Antes de la transformación:
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Alice |25 |
|2 |null |28 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Si cols
es name
y replacement
es Alice -> Tom
, el marco de datos después de la transformación es:
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Tom |25 |
|2 |null |28 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Divide un juego de datos por las columnas proporcionadas en el número especificado de particiones.
Devuelve un nuevo juego de datos particionado hash. Se devuelve el número exacto de partición especificado.
Parámetro | Descripción |
---|---|
partitionColumns |
Nombre de columna o lista separada por comas de nombres de columna por los que se particiona el juego de datos. |
numberOfPartitions |
Número de particiones que se van a crear. |
Genera una acumulación multidimensional de posibles combinaciones mediante la lista de columnas proporcionada y los cálculos en las expresiones de función de agregación proporcionadas.
Las expresiones admiten las siguientes funciones de agregación:
AVG
COUNT
MEAN
MAX
MIN
SUM
Devuelve un marco de datos después de la transformación de acumulación.
Parámetro | Descripción |
---|---|
rollupColumns |
Lista de columnas, separadas por comas, por la que se genera la acumulación multidimensional. |
aggExpressions |
Expresiones de función de agregación que se van a realizar en las columnas. Por ejemplo: |
Ejemplo
Antes de la transformación:
+----------+-----+-------+------+---+
|department|group|region |salary|age|
+----------+-----+-------+------+---+
|Eng |A |local |1000 |10 |
|Art |B |foreign|2000 |11 |
|Sport |C |local |1500 |13 |
|Eng |A |foreign|800 |19 |
|Art |A |foreign|3000 |30 |
|Eng |E |foreign|1000 |21 |
|Art |D |local |1000 |32 |
|Sport |C |local |1000 |28 |
+----------+-----+-------+------+---+
Si rollupColumns
es department, region
y aggExpressions
es salary -> avg, age -> max
(cálculo del salario medio y la edad máxima), la acumulación después de la transformación es:
+----------+-------+-----------------+--------+
|department|region |avg(salary) |max(age)|
+----------+-------+-----------------+--------+
|Eng |foreign|900.0 |21 |
|Sport |null |1250.0 |28 |
|Art |null |2000.0 |32 |
|Eng |null |933.3333333333334|21 |
|Art |foreign|2500.0 |30 |
|Eng |local |1000.0 |10 |
|null |null |1412.5 |32 |
|Sport |local |1250.0 |28 |
|Art |local |1000.0 |32 |
+----------+-------+-----------------+--------+
Ejecuta consultas SQL de Spark en datos entrantes, creando primero vistas temporales con los nombres de tabla proporcionados.
Parámetro | Descripción |
---|---|
SQL |
Sentencia SQL o script que se va a ejecutar. Ejemplo: |
tableName |
Nombre de tabla o lista separada por comas de nombres de tabla por los que Spark crea tablas temporales. Ejemplo: |
Genera una muestra estratificada sin sustitución basada en la fracción de muestreo dada para cada estrato.
Devuelve un nuevo marco de datos que representa la muestra estratificada.
Parámetro | Descripción |
---|---|
strata_col |
Columna que define los estratos. |
fractions |
Fracción de muestreo para cada estrato, de Por ejemplo, Si no se especifica una fracción, se asume cero. |
sample_size |
Si no se especifica |
seed |
Utilice cualquier número aleatorio en |
Ejemplo
Antes de la transformación:
+---+-----+
|key|value|
+---+-----+
| 1| 1|
| 1| 2|
| 2| 1|
| 2| 1|
| 2| 3|
| 3| 2|
| 3| 3|
+---+-----+
Si strata_col
es key
y fractions
es el siguiente:
1 -> 1.0, 3 -> 0.5
Después de la transformación:
+---+-----+
|key|value|
+---+-----+
| 1| 1|
| 1| 2|
| 3| 2|
+---+-----+
Calcula las estadísticas proporcionadas para columnas numéricas y de cadena.
Si no se proporcionan estadísticas, se calculan todas las siguientes opciones:
COUNT
MEAN
STDDEV
MIN
- cuartiles aproximados (percentiles al 25 %, 50 % y 75 %)
MAX
Parámetro | Descripción |
---|---|
statistics |
Lista separada por comas de estadísticas. Los valores soportados son:
Ejemplo: |
Ejemplo
Antes de la transformación:
+----------+------+-----------------+--------+
|department|gender|avg(salary) |max(age)|
+----------+------+-----------------+--------+
|Eng |female|900.0 |21 |
|Sport |null |1250.0 |28 |
|Art |null |2000.0 |32 |
|Eng |null |933.3333333333334|21 |
|Art |female|2500.0 |30 |
|Eng |male |1000.0 |10 |
|null |null |1412.5 |32 |
|Sport |male |1250.0 |28 |
|Art |male |1000.0 |32 |
+----------+------+-----------------+--------+
Supongamos que statistics
es count, mean, stddev, min, 27%, 41%, 95%, max
.
Después de la transformación:
+-------+----------+-----+------+----------------+----------------+
|summary|department|group|gender|salary |age |
+-------+----------+-----+------+----------------+----------------+
|count |8 |8 |8 |8 |8 |
|mean |null |null |null |1412.5 |20.5 |
|stddev |null |null |null |749.166203188585|8.76682056718072|
|min |Art |A |female|800 |10 |
|27% |null |null |null |1000 |13 |
|41% |null |null |null |1000 |19 |
|95% |null |null |null |3000 |32 |
|max |Sport |E |male |3000 |32 |
+-------+----------+-----+------+----------------+----------------+