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.

Los ejecutables analíticos escritos en R admiten varios tipos de datos, todos los cuales tienen un equivalente directo en el DBMS Netezza. Algunos tipos de datos se pueden representar de forma precisa en R, mientras que otros se deben convertir a un tipo de datos similar, como un entero de 64 bits almacenado como numeric o double en R. También hay tipos de datos que no se pueden soportar fácilmente en R. La siguiente tabla identifica todos los tipos de datos disponibles y muestra cómo se soportan en el Adaptador de Lenguaje R.
Netezza Admitidos R Comentarios
DECIMAL Carácter  
VARIABLE Carácter  
NACIONAL Carácter UTF-8
VARIABLE_NACIONAL Carácter UTF-8
BOOL Lógico  
INT8 Entero  
INT16 Entero  
INT32 Entero  
INT64 Doble Pérdida de precisión
NUMERIC32 Nee    
NUMERIC64 Nee    
NUMERIC128 Nee    
FLOAT Doble  
DOBLE Doble  
FECHA Entero  
HORA POSIXct  
TIMETZ Lista Elementos: hora y zona
TIMESTAMP Doble Pérdida de precisión
INTERVALO 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

Netezza define una serie de formatos de datos y de tiempo: ' 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)