Time in responding state

6 junio \06\UTC 2018

Teradata por defecto no registra en DBQL el tiempo en “responding state” (el tiempo en que Teradata está enviando el conjunto de datos al cliente), ya que depende de factores externos (red, aplicación cliente, filesystem de destino, etc…)

No obstante, a partir de Teradata 15 existe en DBQLogTbl la columna LastRespTime. Esta columna registra el “Timestamp” del último “response”, por lo que el “time in responding state” se puede calcular como:

Time in responding state = LastResponseTime – FirstResponseTime

Hay que tener en cuenta que este LastRespTime sólo se registra si está habilitado el “algoritmo 3” en DBQL (BEGIN QUERY LOGGING MODE = 3).

La referencia en la documentación de Teradata:

FirstRespTime: The timestamp when the first response packet is sent to the client unless the request is held by TASM to meet the minimum response time. In this case, it is the timestamp when the first response packet is ready to be sent to the client.

LastRespTime: The timestamp of the last response. This field is NULL if you are not using DBQL CPU/IO Collection algorithm 3.

Como ejemplo, una Query de SAS que extrae 929.456.627 filas. Se observa que el procesamiento de la query es corto, pero el tiempo en “responding state” es lógicamente bastante largo:

QueryId: ****************** 
AppID: SAS
StartTime: 04/06/2018 08:00:39.040000
FirstStepTime: 04/06/2018 08:00:41.180000
FirstRespTime: 04/06/2018 08:01:00.550000
LastRespTime: 04/06/2018 08:25:08.520000 => 00:24:07.97 responding
NumResultRows: 929456627

Saludos.

Carlos.

Anuncios

As of march 2018…

8 mayo \08\UTC 2018

Gartner_March_2018

Saludos.

Carlos.


Teradata BYTE to INTEGER at last!

23 abril \23\UTC 2018

Siempre ha sido un engorro transformar BYTES en ENTEROS en Teradata.

CAST() no lo permite, por lo que hay que buscarse soluciones más o menos ingeniosas, como hicimos aquí o aquí, o crearse una UDF. Lo dicho: un engorro.

Pero hete aquí que desde la versión Teradata 15.0 existe la función (escondida e indocumentada) ID2BIGINT().

Esta nueva función es utilizada para convertir los ID’s de los diferentes objetos del diccionario de datos definidos como BYTE (DatabaseId, TVMId…) a tipos enteros BIGINT. Por lo que parece, es una función interna de utilidad de Teradata, pero puede ser utilizada por el común de los mortales:

 BTEQ -- Enter your SQL request or BTEQ command:
SELECT DatabaseName, DatabaseId, ID2BIGINT(DatabaseId) FROM DBC.DBASE ORDER BY 1;


 *** Query completed. 30 rows found. 3 columns returned.
 *** Total elapsed time was 1 second.

DatabaseName     DatabaseId  ID2BIGINT(DatabaseId)
---------------  ----------  ---------------------
All              00000000                        0
CARLOS           00000304                      772
Crashdumps       0000EE03                    60931
DBC              00000100                      256
dbcmngr          0000FF03                    65283
Default          00000200                      512
External_AP      0000F703                    63235
EXTUSER          00000500                     1280
LockLogShredder  0000F603                    62979
PUBLIC           00000300                      768
SQLJ             0000F303                    62211
SysAdmin         0000ED03                    60675
SYSBAR           0000F503                    62723
SYSDBA           00000204                      516
SYSJDBC          0000FB03                    64259
SYSLIB           0000EA03                    59907
SYSSPATIAL       0000F103                    61699
SystemFe         0000EC03                    60419
SYSUDTLIB        0000F003                    61443
SYSUIF           0000FA03                    64003
Sys_Calendar     0000EF03                    61187
TDPUSER          0000EB03                    60163
TDQCD            0000F803                    63491
TDStats          0000F403                    62467
tdwm             0000FD03                    64771
TD_SERVER_DB     0000F903                    63747
TD_SYSFNLIB      0000E903                    59651
TD_SYSGPL        0000FC03                    64515
TD_SYSXML        0000F203                    61955
Viewpoint        00000404                     1028

Pero lo bueno es que no hay por qué limitarse a identificadores de objetos de la base de datos, sino que funciona con cualquier argumento BYTE:

 BTEQ -- Enter your SQL request or BTEQ command:
SELECT '0x00fabada', ID2BIGINT('00fabada'xB);


 *** Query completed. One row found. 2 columns returned.
 *** Total elapsed time was 1 second.

'0x00fabada'  ID2BIGINT('00FABADA'XB)
------------  -----------------------
0x00fabada                   16431834

Eso sí: si buscas en la documentación sólo encontrarás una oscura referencia como “reserved word”.

Word       Reserved
---------  --------
ID2BIGINT  X

Y tampoco hay noticias de ella en DBC.TVM ni en DBC.Functions.

Saludos.

Carlos.


RStudio RODBC on openSuSE 42.3

11 abril \11\UTC 2018

Después de pelearme bastante con RStudio, unixODBC y el Driver ODBC de Teradata, he conseguido por fin que todo funcione:

RStudio RODBC and Teradata

RStudio RODBC and Teradata

Saludos.

Carlos.


Enough spool?

8 marzo \08\UTC 2018

Perlas como estas son con las que se encuentra uno por esos mundos de dios en los queryplans que toca analizar:

Ésta:

"The result goes into Spool 1 (all_amps)
 (compressed columns allowed), which is redistributed by the hash
 code of (...) to all AMPs. Then we do a SORT to
 order Spool 1 by row hash. The result spool file will not be
cached in memory. The size of Spool 1 is estimated with no
confidence to be 75,646,629,931,772 rows (*** bytes). The
estimated time for this step is 6,217 hours and 28 minutes."

… o ésta:

"The result goes into Spool 1 (group_amps),
which is built locally on the AMPs. The result spool file will
not be cached in memory. The size of Spool 1 is estimated with no
confidence to be 80,514,683,218,670 rows (*** bytes). The
estimated time for this step is 871 hours and 50 minutes."

Saludos.

Carlos.


Teradata ‘On Cloud’ on Azure.

1 febrero \01\UTC 2018

Además de la opción sobre AWS (Amazon Web Services) Teradata ‘On Cloud’ ahora también está disponible en Azure:

Teradata IntelliCloud Now Available on Microsoft Azure

Saludos.

Carlos.

 


Teradata Tools and Utilities (TTU’s) para Ubuntu

10 julio \10\UTC 2017

Hasta ahora las Teradata Teradata Tools and Utilities (TTU’s) para linux sólo se podían instalar “oficialmente” en distribuciones Redhat (y sus respectivas Fedora, CentOS, etc…) o en SuSE (también OpenSuSE). Este paquete de instalación está basado en paquetes “.rpm”.

A partir de la versión 16.10 aparece un nuevo paquete de instalación apto para Ubuntu (basado en paquetes “.deb”), con lo que las TTU’s pueden ser instaladas fácilmente en Ubuntu y, en teoría, en cualquier distribución basada en Debian.

Nota: De momento no pienso instalarlas en mi eee PC con Lubuntu. (Aunque, ¿quién sabe?…)

Saludos.

Carlos.