Skip to content

Commit 3b5c7e1

Browse files
authored
missing fastload article (#186)
1 parent d54286e commit 3b5c7e1

File tree

3 files changed

+867
-0
lines changed
  • i18n
    • es/docusaurus-plugin-content-docs-quickstarts/current/manage-data
    • ja/docusaurus-plugin-content-docs-quickstarts/current/manage-data
  • quickstarts/manage-data

3 files changed

+867
-0
lines changed
Lines changed: 288 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,288 @@
1+
---
2+
sidebar_position: 20
3+
author: Adam Tworkiewicz
4+
5+
page_last_update: 6 de abril de 2022
6+
description: Cargue datos en Vantage de manera eficiente utilizando Teradata Fastload.
7+
keywords: [almacenes de datos, separación de almacenamiento informático, teradata, vantage, plataforma de datos en la nube, almacenamiento de objetos, inteligencia empresarial, análisis empresarial, Fastload]
8+
---
9+
import Tabs from '@theme/Tabs';
10+
import TabItem from '@theme/TabItem';
11+
12+
# Ejecutar grandes cargas masivas de manera eficiente con Fastload
13+
14+
## Aviso de obsolescencia
15+
:::important
16+
Este tutorial describe la utilidad `Fastload`. La utilidad ha quedado obsoleta. Para nuevas implementaciones, considere utilizar [Teradata Parallel Transporter (TPT)](https://docs.teradata.com/search/documents?query=Teradata+Parallel+Transporter+Quick+Start+Guide&sort=last_update&virtual-field=title_only&content-lang=en-US).
17+
:::
18+
19+
## Descripción general
20+
21+
A menudo tenemos la necesidad de mover grandes volúmenes de datos a Vantage. Teradata ofrece la utilidad `Fastload`, que puede cargar de manera eficiente grandes cantidades de datos en Teradata Vantage. Este tutorial demuestra cómo usar `Fastload`. En este escenario, cargaremos más de 300.000 registros, más de 40 MB de datos, en un par de segundos.
22+
23+
## Requisitos previos
24+
25+
import ClearscapeDocsNote from '../_partials/vantage_clearscape_analytics.mdx'
26+
27+
* Acceso a una instancia de Teradata Vantage.
28+
<ClearscapeDocsNote />
29+
* Descargue Teradata Tools and Utilities (TTU) - plataformas compatibles: [Windows](https://downloads.teradata.com/download/tools/teradata-tools-and-utilities-windows-installation-package), [MacOS](https://downloads.teradata.com/download/tools/teradata-tools-and-utilities-macos-installation-package), [Linux](https://downloads.teradata.com/download/tools/teradata-tools-and-utilities-linux-installation-package-0) (requires registration).
30+
31+
## Install TTU
32+
<Tabs>
33+
<TabItem value="Windows" label="Windows">
34+
Descomprima el archivo descargado y ejecute `setup.exe`.
35+
</TabItem>
36+
<TabItem value="MacOS" label="MacOS">
37+
Descomprima el archivo descargado y ejecute `TeradataToolsAndUtilitiesXX.XX.XX.pkg`.
38+
</TabItem>
39+
<TabItem value="Linux" label="Linux">
40+
Descomprima el archivo descargado, vaya al directorio descomprimido y ejecute:
41+
```bash
42+
./setup.sh a
43+
```
44+
</TabItem>
45+
</Tabs>
46+
47+
48+
## Obtener datos de muestra
49+
50+
Trabajaremos con las declaraciones de impuestos de EE. UU. para organizaciones sin fines de lucro. Las declaraciones de impuestos de organizaciones sin fines de lucro son datos públicos. El Servicio de Impuestos Internos de EE. UU. los publica en el depósito S3. Veamos un resumen de las presentaciones de 2020: `https://s3.amazonaws.com/irs-form-990/index_2020.csv`. Puede utilizar su navegador, `wget` o `curl` para guardar el archivo localmente.
51+
52+
## Crear una base de datos
53+
54+
Creemos una base de datos en Vantage. Utilice su herramienta SQL favorita para ejecutar la siguiente consulta:
55+
56+
```sql
57+
CREATE DATABASE irs
58+
AS PERMANENT = 120e6, -- 120MB
59+
SPOOL = 120e6; -- 120MB
60+
```
61+
62+
## Ejecutar carga rápida
63+
64+
Ahora ejecutaremos `Fastload`. `Fastload` es una herramienta de línea de comandos que es muy eficiente para cargar grandes cantidades de datos en Vantage. `Fastload`, para ser rápido, tiene varias restricciones. Solo puede completar tablas vacías; no se admiten inserciones en tablas ya completadas. No admite tablas con índices secundarios. Además, no insertará registros duplicados, incluso si una tabla es una tabla `MULTISET`. Para obtener la lista completa de restricciones, consulte [Referencia de Teradata® `Fastload`](https://docs.teradata.com/r/hBBrRBhRY0MFN4~xApbUqw/root).
65+
66+
Fastload tiene su propio lenguaje de programación. El lenguaje le permite preparar la base de datos con comandos SQL arbitrarios, declarar la fuente de entrada y definir cómo se deben insertar los datos en Vantage. La herramienta admite el modo interactivo y por lotes. En esta sección, usaremos el modo interactivo.
67+
68+
Comencemos `Fastload` en el modo interactivo:
69+
70+
```bash
71+
fastload
72+
```
73+
74+
Primero, iniciemos sesión en una base de datos Vantage. Tengo un Vantage Express ejecutándose localmente, así que usaré `localhost` como nombre de host y `dbc` como nombre de usuario y contraseña:
75+
76+
```bash
77+
LOGON localhost/dbc,dbc;
78+
```
79+
80+
Ahora que hemos iniciado sesión, voy a preparar la base de datos. Estoy cambiando a la base de datos `irs` y asegurándome de que la tabla de destino `irs_returns` y las tablas de error (más sobre las tablas de error más adelante) no existan:
81+
82+
```sql
83+
DATABASE irs;
84+
DROP TABLE irs_returns;
85+
DROP TABLE irs_returns_err1;
86+
DROP TABLE irs_returns_err2;
87+
```
88+
89+
Ahora crearé una tabla vacía que pueda contener los elementos de datos del archivo csv.
90+
91+
```sql
92+
CREATE MULTISET TABLE irs_returns (
93+
return_id INT,
94+
filing_type VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC,
95+
ein INT,
96+
tax_period INT,
97+
sub_date VARCHAR(100) CHARACTER SET LATIN NOT CASESPECIFIC,
98+
taxpayer_name VARCHAR(100) CHARACTER SET LATIN NOT CASESPECIFIC,
99+
return_type VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC,
100+
dln BIGINT,
101+
object_id BIGINT
102+
)
103+
PRIMARY INDEX ( return_id );
104+
```
105+
106+
Ahora que la tabla de destino ha sido preparada, podemos comenzar a cargar los datos. La directiva `ERRORFILES` define archivos de error. Los archivos de error son en realidad tablas que `Fastload` crea. La primera tabla contiene información sobre la conversión de datos y otras cuestiones. La segunda tabla realiza un seguimiento de los problemas de unicidad de los datos, por ejemplo, infracciones de clave primaria.
107+
108+
```sql
109+
BEGIN LOADING irs_returns
110+
ERRORFILES irs_returns_err1, irs_returns_err2;
111+
```
112+
113+
Le indicamos a `Fastload` que guarde un punto de control cada 10.000 filas. Es útil en caso de que tengamos que reiniciar nuestro trabajo. Podrá reanudarse desde el último punto de control.
114+
115+
116+
```sql
117+
CHECKPOINT 10000;
118+
```
119+
120+
También debemos decirle a `Fastload` que omita la primera fila del archivo CSV para comenzar en el registro 2. Esto se debe a que la primera fila contiene encabezados de columna.
121+
122+
```sql
123+
RECORD 2;
124+
```
125+
126+
`Fastload` también necesita saber que es un archivo separado por comas:
127+
128+
```sql
129+
SET RECORD VARTEXT ",";
130+
```
131+
132+
El bloque `DEFINE` especifica qué columnas deberíamos esperar:
133+
134+
```sql
135+
DEFINE in_return_id (VARCHAR(19)),
136+
in_filing_type (VARCHAR(5)),
137+
in_ein (VARCHAR(19)),
138+
in_tax_period (VARCHAR(19)),
139+
in_sub_date (VARCHAR(22)),
140+
in_taxpayer_name (VARCHAR(100)),
141+
in_return_type (VARCHAR(5)),
142+
in_dln (VARCHAR(19)),
143+
in_object_id (VARCHAR(19)),
144+
```
145+
146+
El bloque `DEFINE` también tiene el atributo `FILE` que apunta al archivo con los datos. Reemplace `FILE = /tmp/index_2020.csv;` con la ubicación del archivo `index_2020.csv`:
147+
```sql
148+
FILE = /tmp/index_2020.csv;
149+
```
150+
151+
Finalmente, definimos la instrucción INSERT que colocará los datos en la base de datos y cerramos el bloque `LOADING`:
152+
153+
```sql
154+
INSERT INTO irs_returns (
155+
return_id,
156+
filing_type,
157+
ein,
158+
tax_period,
159+
sub_date,
160+
taxpayer_name,
161+
return_type,
162+
dln,
163+
object_id
164+
) VALUES (
165+
:in_return_id,
166+
:in_filing_type,
167+
:in_ein,
168+
:in_tax_period,
169+
:in_sub_date,
170+
:in_taxpayer_name,
171+
:in_return_type,
172+
:in_dln,
173+
:in_object_id
174+
);
175+
END LOADING;
176+
```
177+
Una vez finalizado el trabajo, nos desconectamos de la base de datos para limpiar las cosas.
178+
179+
```sql
180+
LOGOFF;
181+
```
182+
183+
Así es como se ve el guión completo:
184+
```sql
185+
LOGON localhost/dbc,dbc;
186+
187+
DATABASE irs;
188+
DROP TABLE irs_returns;
189+
DROP TABLE irs_returns_err1;
190+
DROP TABLE irs_returns_err2;
191+
192+
CREATE MULTISET TABLE irs_returns (
193+
return_id INT,
194+
filing_type VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC,
195+
ein INT,
196+
tax_period INT,
197+
sub_date VARCHAR(100) CHARACTER SET LATIN NOT CASESPECIFIC,
198+
taxpayer_name VARCHAR(100) CHARACTER SET LATIN NOT CASESPECIFIC,
199+
return_type VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC,
200+
dln BIGINT,
201+
object_id BIGINT
202+
)
203+
PRIMARY INDEX ( return_id );
204+
205+
BEGIN LOADING irs_returns
206+
ERRORFILES irs_returns_err1, irs_returns_err2;
207+
CHECKPOINT 10000;
208+
RECORD 2;
209+
SET RECORD VARTEXT ",";
210+
211+
DEFINE in_return_id (VARCHAR(19)),
212+
in_filing_type (VARCHAR(5)),
213+
in_ein (VARCHAR(19)),
214+
in_tax_period (VARCHAR(19)),
215+
in_sub_date (VARCHAR(22)),
216+
in_taxpayer_name (VARCHAR(100)),
217+
in_return_type (VARCHAR(5)),
218+
in_dln (VARCHAR(19)),
219+
in_object_id (VARCHAR(19)),
220+
FILE = /tmp/index_2020.csv;
221+
222+
INSERT INTO irs_returns (
223+
return_id,
224+
filing_type,
225+
ein,
226+
tax_period,
227+
sub_date,
228+
taxpayer_name,
229+
return_type,
230+
dln,
231+
object_id
232+
) VALUES (
233+
:in_return_id,
234+
:in_filing_type,
235+
:in_ein,
236+
:in_tax_period,
237+
:in_sub_date,
238+
:in_taxpayer_name,
239+
:in_return_type,
240+
:in_dln,
241+
:in_object_id
242+
);
243+
END LOADING;
244+
245+
LOGOFF;
246+
```
247+
248+
## Por lotes
249+
250+
Para ejecutar nuestro ejemplo en modo por lotes, simplemente guarde todas las instrucciones en un solo archivo y ejecute:
251+
252+
253+
```bash
254+
fastload < file_with_instruction.fastload
255+
```
256+
257+
## `Fastload` vs. NOS
258+
259+
En nuestro caso, el archivo está en un depósito S3. Eso significa que podemos usar Native Object Storage (NOS) para ingerir los datos:
260+
261+
```sql
262+
-- create an S3-backed foreign table
263+
CREATE FOREIGN TABLE irs_returns_nos
264+
USING ( LOCATION('/s3/s3.amazonaws.com/irs-form-990/index_2020.csv') );
265+
266+
-- load the data into a native table
267+
CREATE MULTISET TABLE irs_returns_nos_native
268+
(RETURN_ID, FILING_TYPE, EIN, TAX_PERIOD, SUB_DATE, TAXPAYER_NAME)
269+
AS (
270+
SELECT RETURN_ID, FILING_TYPE, EIN, TAX_PERIOD, SUB_DATE, TAXPAYER_NAME FROM irs_returns_nos
271+
) WITH DATA
272+
NO PRIMARY INDEX;
273+
```
274+
275+
La solución NOS es práctica porque no depende de herramientas adicionales. Se puede implementar usando solo SQL. Funciona bien, especialmente para implementaciones Vantage con una gran cantidad de AMP, ya que las tareas NOS se delegan a AMP y se ejecutan en paralelo. Además, dividir los datos del almacenamiento de objetos en varios archivos puede mejorar aún más el rendimiento.
276+
277+
## Resumen
278+
279+
Este tutorial demostró cómo incorporar grandes cantidades de datos en Vantage. Cargamos cientos de miles de registros en Vantage en un par de segundos usando `Fastload`.
280+
281+
## Otras lecturas
282+
283+
* [Referencia de Teradata® `Fastload`](https://docs.teradata.com/r/hBBrRBhRY0MFN4~xApbUqw/root)
284+
* [Consultar datos almacenados en el almacenamiento de objetos](../manage-data/nos.md)
285+
286+
import CommunityLinkPartial from '../_partials/community_link.mdx';
287+
288+
<CommunityLinkPartial />

0 commit comments

Comments
 (0)