Tipos de datos
Para ejecutar funciones R definidas por el usuario en el servidor es necesario comprender bien cómo se representan y procesan los distintos tipos de datos en Netezza mediante las bibliotecas R de Netezza.
| Netezza | Admitidos | R | Comentarios |
|---|---|---|---|
| DECIMAL | Sí | Carácter | |
| VARIABLE | Sí | Carácter | |
| NACIONAL | Sí | Carácter | UTF-8 |
| VARIABLE_NACIONAL | Sí | Carácter | UTF-8 |
| BOOL | Sí | Lógico | |
| INT8 | Sí | Entero | |
| INT16 | Sí | Entero | |
| INT32 | Sí | Entero | |
| INT64 | Sí | Doble | Pérdida de precisión |
| NUMERIC32 | Nee | ||
| NUMERIC64 | Nee | ||
| NUMERIC128 | Nee | ||
| FLOAT | Sí | Doble | |
| DOBLE | Sí | Doble | |
| FECHA | Sí | Entero | |
| HORA | Sí | POSIXct | |
| TIMETZ | Sí | Lista | Elementos: hora y zona |
| TIMESTAMP | Sí | Doble | Pérdida de precisión |
| INTERVALO | Sí | Lista | Elementos: hora y mes |
Series de caracteres
N columnas de tipos ' VARIABLE y ' FIXED ' se representan en R como vectores de caracteres. Los tipos de datos Netezza ' NATIONAL_FIXED ' y ' NATIONAL_
VARIABLE ' dan como resultado cadenas de caracteres UTF-8-encoded, y se gestionan mediante ' Encoding(x) == "UTF-8".
Enteros
Los enteros que se almacenan en uno, dos y cuatro bytes, es decir, ' INT8, ' INT16 y ' INT32, se traducen a vectores de enteros. En la salida de datos, el valor entero de 4 bytes se recorta a una longitud adecuada.
Las columnas ' INT64 Netezza se representan como vectores numéricos en R. Así, los valores de entrada superiores a 2 53-1 podrían no representarse correctamente. Cuando se envían valores " INT64 " desde un AE R, el valor de salida se convierte en numérico y, a continuación, en un entero de 8 bytes.
No se permiten valores NA al enviar datos al sistema Netezza cuando el formato de salida es de tipo entero. R permite valores NA en el caso de los enteros, pero internamente, estos valores se representan como una secuencia de bits elegida arbitrariamente. Actualmente es el mayor entero negativo de 32 bits, que no puede traducirse a enteros Netezza. Si, en su lugar, se debe emitir NULL, se puede utilizar la función ' setOutputNull '.
Booleano
El tipo de datos " BOOL " se representa como lógico.
No se permiten valores NA al enviar datos al sistema Netezza cuando el formato de salida es booleano. Si NULL debe mostrarse en su lugar, se puede utilizar la setOutputNull función.
Coma flotante
Netezza soporta dos formatos numéricos de coma flotante, ' FLOAT y ' DOUBLE, ambos estandarizados y descritos en "IEEE 754 Standard for Floating-Point Arithmetic" En R, las columnas de estos tipos se convierten en double; del mismo modo, la salida de uno de estos tipos de datos implica la conversión desde double.
Numérico
Los tipos de datos numéricos Netezza son ' NUMERIC32, ' NUMERIC64 y ' NUMERIC128. Actualmente, ninguno de los tipos ' NUMERIC ' está soportado en R. Para evitar errores, convierta los tipos de datos a ' REAL ' antes de utilizar las funciones de R en los datos.
Fecha y hora
DATE, ' TIME, ' TIMETZ, ' TIMESTAMP, y ' INTERVAL.- Fecha
- El tipo de dato "
DATE" se almacena como un número entero de 4 bytes y representa el número de días anteriores (-) o posteriores (+) al 1/1/2000 (1 de enero de 2000). En R, se almacena como un valor entero.minimal value -730,119 (1/1/0001) maximal value 2,921,939 (12/31/9999) - Hora
- El tipo de dato "
TIME" se almacena como un entero de 8 bytes y representa el número de microsegundos entre medianoche y un microsegundo antes de medianoche. En R, se almacena como un valor doble, pero sólo se tiene en cuenta la parte entera, mientras que la parte fraccionaria se ignora.minimal value 0 (00:00:00.000000) maximal value 86,399,999,999 (23:59:59.999999) - Hora con huso horario
- El tipo de datos "
TIMETZ" consta de dos campos: el campo estándar "TIME" y un campo de zona horaria que es un entero de 4 bytes que representa el desfase en segundos, con el signo invertido. Por ejemplo, el desfase de "+1 hora" se almacena como -3600. El desfase debe ser un número entero de minutos, es decir, desfase mod 60=0.offset minimal value -46800 (+ 13:00:00) offset maximal value 46740 (-12:59:00) - Indicación de fecha y hora
- El tipo de dato "
TIMESTAMP" es un entero de 8 bytes que representa el número de microsegundos antes (- ) o después (+) de 00:00:00.0, 1/1/2000. En R, se almacena como tipo de datos double, lo que significa que para algunos valores superiores a 2 53-1 , el error de redondeo podría afectar al valor que se devuelve a Netezza.minimal value -63,082,281,600,000,000 (00:00:00, 1/1/0001) maximal value 252,455,615,999,999,999 (23:59:59.999999, 12/31/9999) - Intervalo
- El tipo de datos "
INTERVAL" consta de un entero de 4 bytes -el número de meses, con signo- y un entero de 8 bytes -el número de microsegundos, con signo-. Una configuración tanto de un valor de meses positivo (+) o negativo (-) como de un valor de microsegundos positivo (+) o negativo (-) es posible y soportada por Netezza. En R, estos valores se representan como un entero (meses) y un doble (microsegundos). El uso del microsegundo significa que, al igual que con 'TIMESTAMP, hay que tener en cuenta los errores de redondeo.Nota:- El valor del microsegundo puede ser tan grande como lo permita el tipo de datos '
INT64' y desbordarse en negativos sin error. En R, el valor del microsegundo se almacena como tipo numérico y se convierte a "INT64" cuando se envía a Netezza. Dado que el tipo numérico permite valores mayores que el valor máximo permitido 'INT64', es importante que los valores no sean mayores que el máximo 'INT64. Esta regla se aplica también al valor mínimo del microsegundo. - Se considera que un mes siempre tiene 30 días.
- Los valores de meses y microsegundos se almacenan por separado; no intercambian información.
months minimal value 3,000,000 (-250,000 years) months maximal value 3,000,000 (250,000 years) microseconds minimal value none (minimal signed INT64) microseconds maximal value none (maximal signed INT64)
- El valor del microsegundo puede ser tan grande como lo permita el tipo de datos '