Teradata Tutorial PDF
Teradata Tutorial PDF
Audience
This tutorial is designed for software professionals who are willing to learn Teradata
concepts and become a Teradata developer. By the end of this tutorial, you will have
gained intermediate level of expertise in Teradata.
Prerequisites
You should have a basic understanding of Relational concepts and basic SQL. It will be
good if you have worked with any other RDBMS product.
All the content and graphics published in this e-book are the property of Tutorials Point (I)
Pvt. Ltd. The user of this e-book is prohibited to reuse, retain, copy, distribute or republish
any contents or a part of contents of this e-book in any manner without written consent
of the publisher.
We strive to update the contents of our website and tutorials as timely and as precisely as
possible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt.
Ltd. provides no guarantee regarding the accuracy, timeliness or completeness of our
website or its contents including this tutorial. If you discover any errors on our website or
in this tutorial, please notify us at contact@tutorialspoint.com
i
Teradata
Table of Contents
About the Tutorial ............................................................................................................................................ i
Audience ........................................................................................................................................................... i
Prerequisites ..................................................................................................................................................... i
Copyright & Disclaimer ..................................................................................................................................... i
Table of Contents ............................................................................................................................................ ii
iii
Teradata
iv
Teradata
v
Teradata
1
1. Teradata - Introduction Teradata
What is Teradata?
Teradata is one of the popular Relational Database Management System. It is mainly
suitable for building large scale data warehousing applications. Teradata achieves this by
the concept of parallelism. It is developed by the company called Teradata.
History of Teradata
Following is a quick summary of the history of Teradata, listing major milestones.
1999 Largest database in the world using Teradata with 130 Terabytes
2002 Teradata V2R5 released with Partition Primary Index and compression
2011 Acquires Teradata Aster and enters into Advanced Analytics Space
Features of Teradata
Following are some of the features of Teradata:
Linear Scalability: Teradata systems are highly scalable. They can scale up to
2048 Nodes. For example, you can double the capacity of the system by doubling
the number of AMPs.
2
Teradata
SQL: Teradata supports industry standard SQL to interact with the data stored in
tables. In addition to this, it provides its own extension.
3
2. Teradata Installation Teradata
Teradata provides Teradata express for VMWARE which is a fully operational Teradata
virtual machine. It provides up to 1 terabyte of storage. Teradata provides both 40GB and
1TB version of VMware.
Prerequisites
Since the VM is 64 bit, your CPU must support 64-bit.
Step 6: Select 'Open a Virtual Machine'. Navigate through the extracted Teradata VMWare
folder and select the file with extension .vmdk.
4
Teradata
Step 7: Teradata VMWare is added to the VMWare client. Select the added Teradata
VMware and click Play Virtual Machine.
5
Teradata
Step 8: If you get a popup on software updates, you can select Remind Me Later.
Step 9: Enter the user name as root, press tab and enter password as root and again
press Enter.
6
Teradata
Step 10: Once the following screen appears on the desktop, double-click on roots home.
Then double-click on Genomes Terminal. This will open the Shell.
Step 11: From the following shell, enter the command /etc/init.d/tpa start. This will start
the Teradata server.
7
Teradata
Starting BTEQ
BTEQ utility is used to submit SQL queries interactively. Following are the steps to start
BTEQ utility.
Step 1: Enter the command /sbin/ifconfig and note down the IP address of the VMWare.
Step 2: Run the command bteq. At the logon prompt, enter the command.
Logon <ipaddress>/dbc,dbc; and enter At the password prompt, enter password as dbc;
You can log into Teradata system using BTEQ and run any SQL queries.
8
3. Teradata Architecture Teradata
Components of Teradata
The key components of Teradata are as follows:
Node: It is the basic unit in Teradata System. Each individual server in a Teradata
system is referred as a Node. A node consists of its own operating system, CPU,
memory, own copy of Teradata RDBMS software and disk space. A cabinet consists
of one or more Nodes.
Parsing Engine: Parsing Engine is responsible for receiving queries from the client
and preparing an efficient execution plan. The responsibilities of parsing engine
are:
o Receive the SQL query from the client.
9
Teradata
o Check if the user has required privilege against the objects used in the SQL
query.
o Prepare the execution plan to execute the SQL query and pass it to BYNET.
o Receives the results from the AMPs and send to the client.
Storage Architecture
When the client runs queries to insert records, Parsing engine sends the records to BYNET.
BYNET retrieves the records and sends the row to the target AMP. AMP stores these records
on its disks. Following diagram shows the storage architecture of Teradata.
10
Teradata
Retrieval Architecture
When the client runs queries to retrieve records, the Parsing engine sends a request to
BYNET. BYNET sends the retrieval request to appropriate AMPs. Then AMPs search their
disks in parallel and identify the required records and sends to BYNET. BYNET then sends
the records to Parsing Engine which in turn will send to the client. Following is the retrieval
architecture of Teradata.
11
4. Teradata Relational Concepts Teradata
Database
Database is a collection of logically related data. They are accessed by many users for
different purposes. For example, a sales database contains entire information about sales
which is stored in many tables.
Tables
Tables is the basic unit in RDBMS where the data is stored. A table is a collection of rows
and columns. Following is an example of employee table.
Columns
A column contains similar data. For example, the column BirthDate in Employee table
contains birth_date information for all employees.
BirthDate
1/5/1980
11/6/1984
3/5/1983
12/1/1984
4/1/1983
Row
Row is one instance of all the columns. For example, in employee table one row contains
information about single employee.
12
Teradata
Primary Key
Primary key is used to uniquely identify a row in a table. No duplicate values are allowed
in a primary key column and they cannot accept NULL values. It is a mandatory field in a
table.
Foreign Key
Foreign keys are used to build a relationship between the tables. A foreign key in a child
table is defined as the primary key in the parent table. A table can have more than one
foreign key. It can accept duplicate values and also null values. Foreign keys are optional
in a table.
13
5. Teradata Data Types Teradata
Each column in a table is associated with a data type. Data types specify what kind of
values will be stored in the column. Teradata supports several data types. Following are
some of the frequently used data types.
Length
Data Types Range of values
(Bytes)
-2,147,483,648 to
INTEGER 4
+2147,483,647
-
9,233,372,036,854,775,80
BIGINT 8 8 to
+9,233,372,036,854,775,8
07
DECIMAL 1-16
NUMERIC 1-16
14
Teradata
DATE 4 YYYYYMMDD
HHMMSS.nnnnnn
TIME 6 or 8 or
HHMMSS.nnnnnn+HHMM
YYMMDDHHMMSS.nnnnnn
or
TIMESTAMP 10 or 12
YYMMDDHHMMSS.nnnnnn
+HHMM
15
6. Teradata Tables Teradata
Tables in Relational model are defined as collection of data. They are represented as rows
and columns.
Table Types
Teradata supports different types of tables.
Permanent Table: This is the default table and it contains data inserted by the
user and stores the data permanently.
Volatile Table: The data inserted into a volatile table is retained only during the
user session. The table and data is dropped at the end of the session. These tables
are mainly used to hold the intermediate data during data transformation.
Global Temporary Table: The definition of Global Temporary table are persistent
but the data in the table is deleted at the end of user session.
Derived Table: Derived table holds the intermediate results in a query. Their
lifetime is within the query in which they are created, used and dropped.
Create Table
CREATE TABLE command is used to create tables in Teradata.
Table Options Specifies the physical attributes of the table such as Journal and
Fallback.
Column Definition Specifies the list of columns, data types and their attributes.
16
Teradata
Example
The following example creates a table called employee with FALLBACK option. The table
contains 5 columns with EmployeeNo as the Unique Primary Index.
Once the table is created, you can use SHOW TABLE command to view the Definition of
the table.
17
Teradata
Alter Table
ALTER TABLE command is used to add or drop columns from an existing table. You can
also use ALTER TABLE command to modify the attributes of the existing columns.
Example
The following example drops the column DOB and adds a new column BirthDate.
You can run SHOW TABLE command to view the changes to the table. In the following
output, you can see that the column employee_dob is removed and BirthDate is added.
18
Teradata
Drop Table
DROP TABLE command is used to drop a table. When the DROP TABLE is issued, data in
the table is deleted and the table is dropped.
Example
The following example drops the table employee.
If you run the SHOW TABLE command after this, you will get an error message stating
that the table doesnt exist.
19
7. Teradata Data Manipulation Teradata
This chapter introduces the SQL commands used to manipulate the data stored in Teradata
tables.
Insert Records
INSERT INTO statement is used to insert records into the table.
Example
The following example inserts records into the employee table.
20
Teradata
Once the above query is inserted, you can use the SELECT statement to view the records
from the table.
Example
The following example inserts records into the employee table. Create a table called
Employee_Bkup with the same column definition as employee table before running the
following insert query.
21
Teradata
DepartmentNo
FROM
Employee;
When the above query is executed, it will insert all records from the employee table into
employee_bkup table.
Rules
The number of columns specified in the VALUES list should match with the
columns specified in the INSERT INTO clause.
The data types of columns specified in the VALUES clause should be compatible
with the data types of columns in the INSERT clause.
Update Records
UPDATE statement is used to update records from the table.
UPDATE <tablename>
SET <columnnamme> = <new value>
[WHERE condition];
Example
The following example updates the employee dept to 03 for employee 101.
UPDATE Employee
SET DepartmentNo=03
WHERE EmployeeNo=101;
In the following output, you can see that the DepartmentNo is updated from 1 to 3 for
EmployeeNo 101.
EmployeeNo DepartmentNo
----------- -------------
101 3
22
Teradata
Rules
You can update one or more values of the table.
If WHERE condition is not specified then all rows of the table are impacted.
You can update a table with the values from another table.
Delete Records
DELETE FROM statement is used to update records from the table.
Example
The following example deletes the employee 101 from the table employee.
In the following output, you can see that employee 101 is deleted from the table.
Rules
You can update one or more records of the table.
If WHERE condition is not specified then all rows of the table are deleted.
You can update a table with the values from another table.
23
8. Teradata SELECT Statement Teradata
SELECT
column 1, column 2, .....
FROM
tablename;
Example
Consider the following employee table.
SELECT EmployeeNo,FirstName,LastName
FROM Employee;
When this query is executed, it fetches EmployeeNo, FirstName and LastName columns
from the employee table.
24
Teradata
If you want to fetch all the columns from a table, you can use the following command
instead of listing down all columns.
The above query will fetch all records from the employee table.
WHERE Clause
WHERE clause is used to filter the records returned by the SELECT statement. A condition
is associated with WHERE clause. Only, the records that satisfy the condition in the WHERE
clause are returned.
Example
The following query fetches records where EmployeeNo is 101.
ORDER BY
When the SELECT statement is executed, the returned rows are not in any specific order.
ORDER BY clause is used to arrange the records in ascending/descending order on any
columns.
Example
The following query fetches records from the employee table and orders the results by
FirstName.
25
Teradata
GROUP BY
GROUP BY clause is used with SELECT statement and arranges similar records into groups.
Example
The following example groups the records by DepartmentNo column and identifies the total
count from each department.
DepartmentNo Count(*)
------------ -----------
3 1
1 1
2 3
26
9. Teradata Logical & Conditional Operators Teradata
Teradata supports the following logical and conditional operators. These operators are
used to perform comparison and combine multiple conditions.
Syntax Meaning
= Equal to
IN If values in <expression>
27
Teradata
BETWEEN
BETWEEN command is used to check if a value is within a range of values.
Example
Consider the following employee table.
The following example fetches records with employee numbers in the range between
101,102 and 103.
When the above query is executed, it returns the employee records with employee no
between 101 and 102.
IN
IN command is used to check the value against a given list of values.
Example
The following example fetches records with employee numbers in 101, 102 and 103.
28
Teradata
EmployeeNo FirstName
----------- ------------------------------
101 Mike
102 Robert
103 Peter
NOT IN
NOT IN command reverses the result of IN command. It fetches records with values that
dont match with the given list.
Example
The following example fetches records with employee numbers not in 101, 102 and 103.
SELECT * FROM
Employee
WHERE EmployeeNo not in (101,102,103);
29
10. Teradata SET Operators Teradata
SET operators combine results from multiple SELECT statement. This may look similar to
Joins, but joins combines columns from multiple tables whereas SET operators combines
rows from multiple rows.
Rules
The number of columns from each SELECT statement should be same.
The data types from each SELECT must be compatible.
ORDER BY should be included only in the final SELECT statement.
UNION
UNION statement is used to combine results from multiple SELECT statements. It ignores
duplicates.
Example
Consider the following employee table and salary table.
30
Teradata
The following UNION query combines the EmployeeNo value from both Employee and
Salary table.
SELECT EmployeeNo
FROM
Employee
UNION
SELECT EmployeeNo
FROM
Salary;
EmployeeNo
-----------
101
102
103
104
105
UNION ALL
UNION ALL statement is similar to UNION, it combines results from multiple tables
including duplicate rows.
31
Teradata
FROM
<table 2>
[WHERE condition];
Example
Following is an example for UNION ALL statement.
SELECT EmployeeNo
FROM
Employee
UNION ALL
SELECT EmployeeNo
FROM
Salary;
When the above query is executed, it produces the following output. You can see that it
returns the duplicates also.
EmployeeNo
-----------
101
104
102
105
103
101
104
102
103
INTERSECT
INTERSECT command is also used to combine results from multiple SELECT statements.
It returns the rows from the first SELECT statement that has corresponding match in the
second SELECT statements. In other words, it returns the rows that exist in both SELECT
statements.
32
Teradata
[WHERE condition]
INTERSECT
SELECT col1, col2, col3
FROM
<table 2>
[WHERE condition];
Example
Following is an example of INTERSECT statement. It returns the EmployeeNo values that
exist in both tables.
SELECT EmployeeNo
FROM
Employee
INTERSECT
SELECT EmployeeNo
FROM
Salary;
When the above query is executed, it returns the following records. EmployeeNo 105 is
excluded since it doesnt exist in SALARY table.
EmployeeNo
-----------
101
104
102
103
MINUS/EXCEPT
MINUS/EXCEPT commands combine rows from multiple tables and returns the rows which
are in first SELECT but not in second SELECT. They both return the same results.
33
Teradata
FROM
<table 2>
[WHERE condition];
Example
Following is an example of MINUS statement.
SELECT EmployeeNo
FROM
Employee
MINUS
SELECT EmployeeNo
FROM
Salary;
EmployeeNo
-----------
105
34
11. Teradata String Manipulation Teradata
Teradata provides several functions to manipulate the strings. These functions are
compatible with ANSI standard.
Example
Following table lists some of the string functions with the results.
35
12. Teradata Date/Time Functions Teradata
Date Storage
Dates are stored as integer internally using the following formula.
You can use the following query to check how the dates are stored.
Since the dates are stored as integer, you can perform some arithmetic operations on
them. Teradata provides functions to perform these operations.
EXTRACT
EXTRACT function extracts portions of day, month and year from a DATE value. This
function is also used to extract hour, minute and second from TIME/TIMESTAMP value.
Example
Following examples show how to extract Year, Month, Date, Hour, Minute and second
values from Date and Timestamp values.
36
Teradata
INTERVAL
Teradata provides INTERVAL function to perform arithmetic operations on DATE and TIME
values. There are two types of INTERVAL functions.
Year-Month Interval
YEAR
YEAR TO MONTH
MONTH
Day-Time Interval
DAY
DAY TO HOUR
DAY TO MINUTE
DAY TO SECOND
HOUR
HOUR TO MINUTE
HOUR TO SECOND
37
Teradata
MINUTE
MINUTE TO SECOND
SECOND
Example
The following example adds 3 years to current date.
The following example adds 01 day, 05 hours and 10 minutes to current timestamp.
38
13. Teradata Built-in Functions Teradata
Teradata provides built-in functions which are extensions to SQL. Following are the
common built-in functions.
Function Result
Date
SELECT DATE; --------
16/01/01
Date
SELECT CURRENT_DATE; --------
16/01/01
Time
SELECT TIME; --------
04:50:29
Time
SELECT CURRENT_TIME; --------
04:50:29
Current TimeStamp(6)
SELECT CURRENT_TIMESTAMP; --------------------------------
2016-01-01 04:51:06.990000+00:00
Database
------------------------------
SELECT DATABASE;
TDUSER
39
14. Teradata Aggregate Functions Teradata
Teradata supports common aggregate functions. They can be used with the SELECT
statement.
Example
Consider the following Salary Table.
COUNT
The following example counts the number of records in the Salary table.
Count(*)
-----------
5
MAX
The following example returns maximum employee net salary value.
MIN
The following example returns minimum employee net salary value from the Salary table.
Minimum(NetPay)
---------------------
36000
AVG
The following example returns the average of employees net salary value from the table.
Average(NetPay)
---------------------
65800
SUM
The following example calculates the sum of employees net salary from all records of the
Salary table.
Sum(NetPay)
-----------------
329000
41
15. Teradata CASE & COALESCE Teradata
CASE Expression
CASE expression evaluates each row against a condition or WHEN clause and returns the
result of the first match. If there are no matches then the result from ELSE part of
returned.
CASE <expression>
WHEN <expression> THEN result-1
WHEN <expression> THEN result-2
ELSE
Result-n
END
Example
Consider the following Employee table.
The following example evaluates the DepartmentNo column and returns value of 1 if the
department number is 1; returns 2 if the department number is 3; otherwise it returns
value as invalid department.
SELECT
EmployeeNo,
CASE DepartmentNo
WHEN 1 THEN 'Admin'
WHEN 2 THEN 'IT'
ELSE 'Invalid Dept'
42
Teradata
END AS Department
FROM Employee;
The above CASE expression can also be written in the following form which will produce
the same result as above.
SELECT
EmployeeNo,
CASE
WHEN DepartmentNo=1 THEN 'Admin'
WHEN DepartmentNo=2 THEN 'IT'
ELSE 'Invalid Dept'
END AS Department
FROM Employee;
COALESCE
COALESCE is a statement that returns the first non-null value of the expression. It returns
NULL if all the arguments of the expression evaluates to NULL. Following is the syntax.
Example
SELECT
EmployeeNo,
COALESCE(dept_no, 'Department not found')
FROM
employee;
43
Teradata
NULLIF
NULLIF statement returns NULL if the arguments are equal.
NULLIF(expression 1, expression 2)
Example
The following example returns NULL if the DepartmentNo is equal to 3. Otherwise, it
returns the DepartmentNo value.
SELECT
EmployeeNo,
NULLIF(DepartmentNo,3) AS department
FROM Employee;
The above query returns the following records. You can see that employee 105 has
department no. as NULL.
44
16. Teradata Primary Index Teradata
Primary index is used to specify where the data resides in Teradata. It is used to specify
which AMP gets the data row. Each table in Teradata is required to have a primary index
defined. If the primary index is not defined, Teradata automatically assigns the primary
index. Primary index provides the fastest way to access the data. A primary may have a
maximum of 64 columns.
Primary index is defined while creating a table. There are 2 types of Primary Indexes.
45
Teradata
46
17. Teradata Joins Teradata
Join is used to combine records from more than one table. Tables are joined based on the
common columns/values from these tables.
Inner Join
Left Outer Join
Right Outer Join
Full Outer Join
Self Join
Cross Join
Cartesian Production Join
INNER JOIN
Inner Join combines records from multiple tables and returns the values that exist in both
the tables.
Example
Consider the following employee table and salary table.
47
Teradata
The following query joins the Employee table and Salary table on the common column
EmployeeNo. Each table is assigned an alias A & B and the columns are referenced with
the correct alias.
When the above query is executed, it returns the following records. Employee 105 is not
included in the result since it doesnt have matching records in the Salary table.
OUTER JOIN
LEFT OUTER JOIN and RIGHT OUTER JOIN also combine the results from multiple table.
LEFT OUTER JOIN returns all the records from the left table and returns only the
matching records from the right table.
RIGHT OUTER JOIN returns all the records from the right table and returns only
matching rows from the left table.
FULL OUTER JOIN combines the results from both LEFT OUTER and RIGHT OUTER
JOINS. It returns both matching and non-matching rows from the joined tables.
48
Teradata
Following is the syntax of the OUTER JOIN statement. You need to use one of the options
from LEFT OUTER JOIN, RIGHT OUTER JOIN or FULL OUTER JOIN.
Example
Consider the following example of the LEFT OUTER JOIN query. It returns all the records
from Employee table and matching records from Salary table.
When the above query is executed, it produces the following output. For employee 105,
NetPay value is NULL, since it doesnt have matching records in Salary table.
49
Teradata
CROSS JOIN
Cross Join joins every row from the left table to every row from the right table.
When the above query is executed, it produces the following output. Employee No 101
from Employee table is joined with each and every record from Salary Table.
50
18. Teradata SubQueries Teradata
A subquery returns records from one table based on the values from another table. It is a
SELECT query within another query. The SELECT query called as inner query is executed
first and the result is used by the outer query. Some of its salient features are:
A query can have multiple subqueries and subqueries may contain another
subquery.
If subquery returns only one value, you can use = operator to use it with the outer
query. If it returns multiple values you can use IN or NOT IN.
Example
Consider the following Salary table.
The following query identifies the employee number with highest salary. The inner SELECT
performs the aggregation function to return the maximum NetPay value and the outer
SELECT query uses this value to return the employee record with this value.
51
Teradata
EmployeeNo NetPay
----------- -----------
103 83000
52
Teradata
53
19. Teradata Table Types Teradata
Derived Table
Volatile Table
Global Temporary Table
Derived Table
Derived tables are created, used and dropped within a query. These are used to store
intermediate results within a query.
Example
The following example builds a derived table EmpSal with records of employees with salary
greater than 75000.
SELECT
Emp.EmployeeNo,
Emp.FirstName,
Empsal.NetPay
FROM
Employee Emp,
(select EmployeeNo , NetPay
from Salary
where NetPay >= 75000) Empsal
where Emp.EmployeeNo=Empsal.EmployeeNo;
When the above query is executed, it returns the employees with salary greater than
75000.
54
Teradata
Volatile Table
Volatile tables are created, used and dropped within a user session. Their definition is not
stored in data dictionary. They hold intermediate data of the query which is frequently
used. Following is the syntax.
Example
CREATE VOLATILE TABLE dept_stat
(
dept_no INTEGER,
avg_salary INTEGER,
max_salary INTEGER,
min_salary INTEGER
)
PRIMARY INDEX(dept_no)
ON COMMIT PRESERVE ROWS;
55
Teradata
Example
CREATE SET GLOBAL TEMPORARY TABLE dept_stat
(
dept_no INTEGER,
avg_salary INTEGER,
max_salary INTEGER,
min_salary INTEGER
)
PRIMARY INDEX(dept_no);
56
20. Teradata Space Concepts Teradata
Permanent Space
Permanent space is the maximum amount of space available for the user/database to hold
data rows. Permanent tables, journals, fallback tables and secondary index sub-tables use
permanent space.
Permanent space is not pre-allocated for the database/user. They are just defined as the
maximum amount of space the database/user can use. The amount of permanent space
is divided by the number of AMPs. Whenever per AMP limit exceeds, an error message is
generated.
Spool Space
Spool space is the unused permanent space which is used by the system to keep the
intermediate results of the SQL query. Users without spool space cannot execute any
query.
Similar to Permanent space, spool space defines the maximum amount of space the user
can use. Spool space is divided by the number of AMPs. Whenever per AMP limit exceeds,
the user will get a spool space error.
Temp Space
Temp space is the unused permanent space which is used by Global Temporary tables.
Temp space is also divided by the number of AMPs.
57
21. Teradata Secondary Index Teradata
A table can contain only one primary index. More often, you will come across scenarios
where the table contains other columns, using which the data is frequently accessed.
Teradata will perform full table scan for those queries. Secondary indexes resolve this
issue.
Secondary indexes are an alternate path to access the data. There are some differences
between the primary index and the secondary index.
Secondary index values are stored in sub tables. These tables are built in all AMPs.
They occupy additional space since they build sub-table and they also require
maintenance since the sub-tables need to be updated for each new row.
58
22. Teradata Statistics Teradata
Teradata optimizer comes up with an execution strategy for every SQL query. This
execution strategy is based on the statistics collected on the tables used within the SQL
query. Statistics on the table is collected using COLLECT STATISTICS command. Optimizer
requires environment information and data demographics to come up with optimal
execution strategy.
Environment Information
Number of Nodes, AMPs and CPUs
Amount of memory
Data Demographics
Number of rows
Row size
Range of values in the table
Number of rows per value
Number of Nulls
Collecting Statistics
COLLECT STATISTICS command is used to collect statistics on a table.
Example
The following example collects statistics on EmployeeNo column of Employee table.
59
Teradata
Viewing Statistics
You can view the collected statistics using HELP STATISTICS command.
Example
Following is an example to view the statistics collected on Employee table.
60
23. Teradata Compression Teradata
Compression is used to reduce the storage used by the tables. In Teradata, compression
can compress up to 255 distinct values including NULL. Since the storage is reduced,
Teradata can store more records in a block. This results in improved query response time
since any I/O operation can process more rows per block. Compression can be added at
table creation using CREATE TABLE or after table creation using ALTER TABLE command.
Limitations
Only 255 values can be compressed per column.
Primary Index column cannot be compressed.
Volatile tables cannot be compressed.
Multi-Value compression can be used when you have a column in a large table with finite
values.
61
24. Teradata EXPLAIN Teradata
EXPLAIN command returns the execution plan of parsing engine in English. It can be used
with any SQL statement except on another EXPLAIN command. When a query is preceded
with EXPLAIN command, the execution plan of the Parsing Engine is returned to the user
instead of AMPs.
Examples of EXPLAIN
Consider the table Employee with the following definition.
Example
Following is a sample query where the optimizer may choose FTS.
When the above query is executed, it produces the following output. As can be seen the
optimizer chooses to access all AMPs and all rows within the AMP.
When the above query is executed, it produces the following output. As can be seen it is
a single-AMP retrieval and the optimizer is using the unique primary index to access the
row.
Example
Consider the table Salary with the following definition.
When the above query is executed, it produces the following output. As can be seen the
optimizer retrieves the row in two amp operation using unique secondary index.
Additional Terms
Following is the list of terms commonly seen in EXPLAIN plan.
A spool file is no longer needed and will be released when this step completes.
Duplicate rows only exist in spool files, not set tables. Doing a DISTINCT operation.
A spool file is built containing the Row IDs found in a secondary index (index #n)
Duplicating data from the smaller table (in terms of SPOOL) in preparation for a
join.
Indicates one AMP or subset of AMPs will be used instead of all AMPs.
64
25. Teradata Hashing Algorithm Teradata
A row is assigned to a particular AMP based on the primary index value. Teradata uses
hashing algorithm to determine which AMP gets the row.
The parser receives the query and passes the PI value of the record to the hashing
algorithm.
The hashing algorithm hashes the primary index value and returns a 32 bit number,
called Row Hash.
The higher order bits of the row hash (first 16 bits) is used to identify the hash map
entry. The hash map contains one AMP #. Hash map is an array of buckets which
contains specific AMP #.
65
Teradata
AMP uses the 32 bit Row hash to locate the row within its disk.
If there is any record with same row hash, then it increments the uniqueness ID
which is a 32 bit number. For new row hash, uniqueness ID is assigned as 1 and
incremented whenever a record with same row hash is inserted.
Each table row in the AMP is logically sorted by their Row IDs.
66
26. Teradata JOIN INDEX Teradata
JOIN INDEX is a materialized view. Its definition is permanently stored and the data is
updated whenever the base tables referred in the join index is updated. JOIN INDEX may
contain one or more tables and also contain pre-aggregated data. Join indexes are mainly
used for improving the performance.
Example
Consider the following Employee and Salary tables.
67
Teradata
If the user submits a query with a WHERE clause on EmployeeNo, then the system will
query the Employee table using the unique primary index. If the user queries the employee
table using employee_name, then the system may access the join index Employee_JI
using employee_name. The rows of the join index are hashed on employee_name column.
If the join index is not defined and the employee_name is not defined as secondary index,
then the system will perform full table scan to access the rows which is time consuming.
You can run the following EXPLAIN plan and verify the optimizer plan. In the following
example you can see that the optimizer is using the Join Index instead of base Employee
table when the table queries using the Employee_Name column.
68
Teradata
Example
The following example creates a JOIN INDEX named Employee_Salary_JI by joining
Employee and Salary tables.
Whenever the base tables Employee or Salary are updated, then the Join index
Employee_Salary_JI is also automatically updated. If you are running a query joining
Employee and Salary tables, then the optimizer may choose to access the data from
Employee_Salary_JI directly instead of joining the tables. EXPLAIN plan on the query can
be used to verify if the optimizer will choose the base table or Join index.
Example
In the following example Employee and Salary is joined to identify the total salary per
Department.
69
Teradata
Primary Index(DepartmentNo);
70
27. Teradata Views Teradata
Views are database objects that are built by the query. Views can be built using a single
table or multiple tables by way of join. Their definition is stored permanently in data
dictionary but they don't store copy of the data. Data for the view is built dynamically.
A view may contain a subset of rows of the table or a subset of columns of the table.
Create a View
Views are created using CREATE VIEW statement.
Example
Consider the following Employee table.
71
Teradata
Using Views
You can use regular SELECT statement to retrieve data from Views.
Example
The following example retrieves the records from Employee_View;
Modifying Views
An existing view can be modified using REPLACE VIEW statement.
Example
The following example modifies the view Employee_View for adding additional columns.
JoinedDate
DepartmentNo
FROM
Employee;
Drop View
An existing view can be dropped using DROP VIEW statement.
Example
Following is an example to drop the view Employee_View.
Advantages of Views
Views provide additional level of security by restricting the rows or columns of a
table.
73
28. Teradata Macros Teradata
Macro is a set of SQL statements which are stored and executed by calling the Macro
name. The definition of Macros is stored in Data Dictionary. Users only need EXEC privilege
to execute the Macro. Users don't need separate privileges on the database objects used
inside the Macro. Macro statements are executed as a single transaction. If one of the SQL
statements in Macro fails, then all the statements are rolled back. Macros can accept
parameters. Macros can contain DDL statements, but that should be the last statement in
Macro.
Create Macros
Macros are created using CREATE MACRO statement.
Example
Consider the following Employee table.
74
Teradata
The following example creates a Macro called Get_Emp. It contains a select statement to
retrieve records from employee table.
Executing Macros
Macros are executed using EXEC command.
EXEC <macroname>;
Example
The following example executes the Macro names Get_Emp; When the following command
is executed, it retrieves all records from employee table.
EXEC Get_Emp;
*** Query completed. 5 rows found. 3 columns returned.
*** Total elapsed time was 1 second.
75
Teradata
Parameterized Macros
Teradata Macros can accept parameters. Within a Macro, these parameters are referenced
with ; (semicolon).
EXEC <macroname>(value);
Example
The following example executes the Macro names Get_Emp; It accepts employee no as
parameter and extracts records from employee table for that employee.
EXEC Get_Emp_Salary(101);
*** Query completed. One row found. 2 columns returned.
*** Total elapsed time was 1 second.
EmployeeNo NetPay
----------- ------------
101 36000
76
29. Teradata Stored Procedure Teradata
A stored procedure contains a set of SQL statements and procedural statements. They
may contain only procedural statements. The definition of stored procedure is stored in
database and the parameters are stored in data dictionary tables.
Advantages
Stored procedures reduce the network load between the client and the server.
Provides better security since the data is accessed through stored procedures
instead of accessing them directly.
Gives better maintenance since the business logic is tested and stored in the server.
Creating Procedure
Stored Procedures are created using CREATE PROCEDURE statement.
Example
Consider the following Salary Table.
77
Teradata
The following example creates a stored procedure named InsertSalary to accept the values
and insert into Salary Table.
Executing Procedures
Stored Procedures are executed using CALL statement.
Example
The following example calls the stored procedure InsertSalary and inserts records to Salary
Table.
CALL InsertSalary(105,20000,2000,18000);
78
Teradata
Once the above query is executed, it produces the following output and you can see the
inserted row in Salary table.
79
30. Teradata JOIN Strategies Teradata
Join Methods
Teradata uses different join methods to perform join operations. Some of the commonly
used Join methods are:
Merge Join
Nested Jon
Product Join
Merge Join
Merge Join method takes place when the join is based on the equality condition. Merge
Join requires the joining rows to be on the same AMP. Rows are joined based on their row
hash. Merge Join uses different join strategies to bring the rows to the same AMP.
Strategy #1
If the join columns are the primary indexes of the corresponding tables, then the joining
rows are already on the same AMP. In this case, no distribution is required.
80
Teradata
When these two tables are joined on EmployeeNo column, then no redistribution takes
place since EmployeeNo is the primary index of both the tables which are being joined.
Strategy #2
Consider the following Employee and Department tables.
If these two tables are joined on DeparmentNo column, then the rows need to be
redistributed since DepartmentNo is a primary index in one table and non-primary index
in another table. In this scenario, joining rows may not be on the same AMP. In such case,
Teradata may redistribute employee table on DepartmentNo column.
81
Teradata
Strategy #3
For the above Employee and Department tables, Teradata may duplicate the Department
table on all AMPs, if the size of Department table is small.
Nested Join
Nested Join doesnt use all AMPs. For the Nested Join to take place, one of the condition
should be equality on the unique primary index of one table and then joining this column
to any index on the other table.
In this scenario, the system will fetch the one row using Unique Primary index of one table
and use that row hash to fetch the matching records from other table. Nested join is the
most efficient of all Join methods.
Product Join
Product Join compares each qualifying row from one table with each qualifying row from
other table. Product join may take place due to some of the following factors:
82
31. Teradata Partitioned Primary Index Teradata
Partitioned Primary Index (PPI) is an indexing mechanism that is useful in improving the
performance of certain queries. When rows are inserted into a table, they are stored in an
AMP and arranged by their row hash order. When a table is defined with PPI, the rows are
sorted by their partition number. Within each partition, they are arranged by their row
hash. Rows are assigned to a partition based on the partition expression defined.
Advantages
Avoid full table scan for certain queries.
Avoid using secondary index that requires additional physical structure and
additional I/O maintenance.
Example
Consider the following Orders table with Primary Index on OrderNo.
83
Teradata
Assume that the records are distributed between AMPs as shown in the following tables.
Recorded are stored in AMPs, sorted based on their row hash.
AMP 1 AMP 2
RowHash OrderNo OrderDate RowHash OrderNo OrderDate
If you run a query to extract the orders for a particular date, then the optimizer may
choose to use Full Table Scan, then all the records within the AMP may be accessed. To
avoid this, you can define the order date as Partitioned Primary Index. When rows are
inserted into orders table, they are partitioned by the order date. Within each partition
they will be ordered by their row hash.
The following data shows how the records will be stored in AMPs, if they are partitioned
by Order Date. If a query is run to access the records by Order Date, then only the partition
that contains the records for that particular order will be accessed.
AMP 1
0 3 7501 2015-10-01
1 1 7505 2015-10-03
1 2 7504 2015-10-03
2 4 7508 2015-10-05
AMP 2
0 2 7502 2015-10-02
0 4 7503 2015-10-02
1 3 7506 2015-10-04
2 1 7507 2015-10-05
84
Teradata
In the above example, the table is partitioned by OrderDate column. There will be one
separate partition for each day.
85
32. Teradata OLAP Functions Teradata
OLAP functions are similar to aggregate functions except that the aggregate functions will
return only one value whereas the OLAP function will provide the individual rows in addition
to the aggregates.
Example
Consider the following Salary table.
Following is an example to find the cumulative sum or running total of NetPay on Salary
table. Records are sorted by EmployeeNo and cumulative sum is calculated on NetPay
column.
SELECT
EmployeeNo, NetPay,
SUM(Netpay) OVER(ORDER BY EmployeeNo ROWS
UNBOUNDED PRECEDING) as TotalSalary
FROM Salary;
86
Teradata
RANK
RANK function orders the records based on the column provided. RANK function can also
filter the number of records returned based on the rank.
RANK() OVER
([PARTITION BY columnnlist] [ORDER BY columnlist][DESC|ASC])
Example
Consider the following Employee table.
Following query orders the records of the employee table by Joined Date and assigns the
ranking on Joined Date.
87
Teradata
PARTITION BY clause groups the data by the columns defined in the PARTITION BY clause
and performs the OLAP function within each group. Following is an example of the query
that uses PARTITION BY clause.
When the above query is executed, it produces the following output. You can see that the
Rank is reset for each Department.
88
33. Teradata Data Protection Teradata
This chapter discusses the features available for data protection in Teradata.
Transient Journal
Teradata uses Transient Journal to protect data from transaction failures. Whenever any
transactions are run, Transient journal keeps a copy of the before images of the affected
rows until the transaction is successful or rolled back successfully. Then, the before images
are discarded. Transient journal is kept in each AMPs. It is an automatic process and
cannot be disabled.
Fallback
Fallback protects the table data by storing the second copy of rows of a table on another
AMP called as Fallback AMP. If one AMP fails, then the fallback rows are accessed. With
this, even if one AMP fails, data is still available through fallback AMP. Fallback option can
be used at table creation or after table creation. Fallback ensures that the second copy of
the rows of the table is always stored in another AMP to protect the data from AMP failure.
However, fallback occupies twice the storage and I/O for Insert/Delete/Update.
Following diagram shows how fallback copy of the rows are stored in another AMP.
89
Teradata
Cliques
Clique is a mechanism used by Teradata to protect data from Node failures. A clique is
nothing but a set of Teradata nodes that share a common set of Disk Arrays. When a node
fails, then the vprocs from the failed node will migrate to other nodes in the clique and
continue to access their disk arrays.
90
Teradata
RAID
Redundant Array of Independent Disks (RAID) is a mechanism used to protect data from
Disk Failures. Disk Array consists of a set of disks which are grouped as a logical unit. This
unit may look like a single unit to the user but they may be spread across several disks.
RAID 1 is commonly used in Teradata. In RAID 1, each disk is associated with a mirror
disk. Any changes to the data in primary disk is reflected in mirror copy also. If the primary
disk fails, then the data from mirror disk can be accessed.
91
34. Teradata User Management Teradata
Users
A user is created using CREATE USER command. In Teradata, a user is also similar to a
database. They both can be assigned space and contain database objects except that the
user is assigned a password.
While creating a user, the values for user name, Permanent space and Password is
mandatory. Other fields are optional.
Example
Following is an example to create the user TD01.
92
Teradata
Accounts
While creating a new user, the user may be assigned to an account. ACCOUNT option in
CREATE USER is used to assign the account. A user may be assigned to multiple accounts.
Example
The following example creates the user TD02 and assigns the account as IT and Admin.
The user can specify the account id while logging into Teradata system or after being
logged into the system using SET SESSION command.
Grant Privileges
GRANT command is used to assign one or more privileges on the database objects to the
user or database.
93
Teradata
Example
Following is an example of GRANT statement.
Revoke Privileges
REVOKE command removes the privileges from the users or databases. The REVOKE
command can only remove explicit privileges.
Example
Following is an example of REVOKE command.
94
35. Teradata Performance Tuning Teradata
Explain
The first step in performance tuning is the use of EXPLAIN on your query. EXPLAIN plan
gives the details of how optimizer will execute your query. In the Explain plan, check for
the keywords like confidence level, join strategy used, spool file size, redistribution, etc.
Collect Statistics
Optimizer uses Data demographics to come up with effective execution strategy. COLLECT
STATISTICS command is used to collect data demographics of the table. Make sure that
the statistics collected on the columns are up to date.
Collect statistics on the columns that are used in WHERE clause and on the columns
used in the joining condition.
Collect statistics on Non Unique Secondary Index columns. Optimizer will decide if
it can use NUSI or Full Table Scan.
Collect statistics on the Join Index though the statistics on base table is collected.
Data Types
Make sure that proper data types are used. This will avoid the use of excessive storage
than required.
Conversion
Make sure that the data types of the columns used in join condition are compatible to
avoid explicit data conversions.
Sort
Remove unnecessary ORDER BY clauses unless required.
95
Teradata
Primary Index
Make sure that the Primary Index is correctly defined for the table. The primary index
column should evenly distribute the data and should be frequently used to access the data.
SET Table
If you define a SET table, then the optimizer will check if the record is duplicate for each
and every record inserted. To remove the duplicate check condition, you can define Unique
Secondary Index for the table.
MULTISET Table
If you are sure that the input records will not have duplicate records, then you can define
the target table as MULTISET table to avoid the duplicate row check used by SET table.
96
36. Teradata FastLoad Teradata
FastLoad utility is used to load data into empty tables. Since it does not use transient
journals, data can be loaded quickly. It doesn't load duplicate rows even if the target table
is a MULTISET table.
Limitation
Target table should not have secondary index, join index and foreign key reference.
Phase 1
The Parsing engines read the records from the input file and sends a block to each
AMP.
Then AMPs hash each record and redistribute them to the correct AMP.
At the end of Phase 1, each AMP has its rows but they are not in row hash sequence.
Phase 2
Phase 2 starts when FastLoad receives the END LOADING statement.
Each AMP sorts the records on row hash and writes them to the disk.
Locks on the target table is released and the error tables are dropped.
Example
Create a text file with the following records and name the file as employee.txt.
101,Mike,James,1980-01-05,2010-03-01,1
102,Robert,Williams,1983-03-05,2010-09-01,1
103,Peter,Paul,1983-04-01,2009-02-12,2
104,Alex,Stuart,1984-11-06,2014-01-01,2
105,Robert,James,1984-12-01,2015-03-09,3
97
Teradata
Following is a sample FastLoad script to load the above file into Employee_Stg table.
LOGON 192.168.1.102/dbc,dbc;
DATABASE tduser;
BEGIN LOADING tduser.Employee_Stg
ERRORFILES Employee_ET, Employee_UV
CHECKPOINT 10;
SET RECORD VARTEXT ",";
DEFINE in_EmployeeNo (VARCHAR(10)) ,
in_FirstName (VARCHAR(30)) ,
in_LastName (VARCHAR(30)) ,
in_BirthDate (VARCHAR(10)) ,
in_JoinedDate (VARCHAR(10)) ,
in_DepartmentNo (VARCHAR(02)) ,
FILE=employee.txt;
INSERT INTO Employee_Stg
(EmployeeNo,FirstName,LastName,BirthDate,JoinedDate,
DepartmentNo)
VALUES (
:in_EmployeeNo ,
:in_FirstName ,
:in_LastName ,
:in_BirthDate (FORMAT 'YYYY-MM-DD'),
:in_JoinedDate (FORMAT 'YYYY-MM-DD'), :in_DepartmentNo );
END LOADING;
LOGOFF;
Once the above command is executed, the FastLoad script will run and produce the log.
In the log, you can see the number of records processed by FastLoad and status code.
98
Teradata
FastLoad Terms
Following is the list of common terms used in FastLoad script.
SET RECORD: Specifies if the input file format is formatted, binary, text or
unformatted.
INSERT: Inserts the records from the input file into the target table.
END LOADING: Initiates phase 2 of the FastLoad. Distributes the records into the
target table.
99
37. Teradata MultiLoad Teradata
MultiLoad can load multiple tables at a time and it can also perform different types of tasks
such as INSERT, DELETE, UPDATE and UPSERT. It can load up to 5 tables at a time and
perform up to 20 DML operations in a script. The target table is not required for MultiLoad.
IMPORT
DELETE
MultiLoad requires a work table, a log table and two error tables in addition to the target
table.
Log Table: Used to maintain the checkpoints taken during load which will be used
for restart.
Error Tables: These tables are inserted during load when an error occurs. First
error table stores conversion errors whereas second error table stores duplicate
records.
Log Table: Maintains the results from each phase of MultiLoad for restart purpose.
Work table: MultiLoad script creates one work table per target table. Work table
is used to keep DML tasks and the input data.
Limitation
MultiLoad has some limitations.
Phase 2: DML Transaction Phase Verifies the syntax of DML statements and
brings them to Teradata system.
Phase 3: Acquisition Phase Brings the input data into work tables and locks the
table.
100
Teradata
Example
Create a text file with the following records and name the file as employee.txt.
101,Mike,James,1980-01-05,2010-03-01,1
102,Robert,Williams,1983-03-05,2010-09-01,1
103,Peter,Paul,1983-04-01,2009-02-12,2
104,Alex,Stuart,1984-11-06,2014-01-01,2
105,Robert,James,1984-12-01,2015-03-09,3
The following example is a MultiLoad script that reads records from employee table and
loads into Employee_Stg table.
.LOGTABLE tduser.Employee_log;
.LOGON 192.168.1.102/dbc,dbc;
101
Teradata
102
38. Teradata FastExport Teradata
FastExport utility is used to export data from Teradata tables into flat files. It can also
generate the data in report format. Data can be extracted from one or more tables using
Join. Since FastExport exports the data in 64K blocks, it is useful for extracting large
volume of data.
Example
Consider the following Employee table.
Following is an example of a FastExport script. It exports data from employee table and
writes into a file employeedata.txt.
.LOGTABLE tduser.employee_log;
.LOGON 192.168.1.102/dbc,dbc;
DATABASE tduser;
.BEGIN EXPORT SESSIONS 2;
.EXPORT OUTFILE employeedata.txt
MODE RECORD FORMAT TEXT;
SELECT CAST(EmployeeNo AS CHAR(10)) ,
CAST(FirstName AS CHAR(15)) ,
CAST(LastName AS CHAR(15)) ,
CAST(BirthDate AS CHAR(10))
FROM
Employee;
.END EXPORT;
.LOGOFF;
103
Teradata
After executing the above command, you will receive the following output in the file
employeedata.txt.
FastExport Terms
Following is the list of terms commonly used in FastExport script.
104
39. Teradata BTEQ Teradata
BTEQ utility is a powerful utility in Teradata that can be used in both batch and interactive
mode. It can be used to run any DDL statement, DML statement, create Macros and stored
procedures. BTEQ can be used to import data into Teradata tables from flat file and it can
also be used to extract data from tables into files or reports.
BTEQ Terms
Following is the list of terms commonly used in BTEQ scripts.
Example
Following is a sample BTEQ script.
.LOGON 192.168.1.102/dbc,dbc;
DATABASE tduser;
SELECT * FROM
Employee
Sample 1;
.IF ACTIVITYCOUNT <> 0 THEN .GOTO InsertEmployee;
.LABEL InsertEmployee
INSERT INTO employee_bkup
SELECT a.EmployeeNo,
a.FirstName,
a.LastName,
a.DepartmentNo,
b.NetPay
FROM
Employee a INNER JOIN Salary b
ON (a.EmployeeNo=b.EmployeeNo);
Selects one record from Employee table to check if the table has any records.
Checks ERRORCODE to make sure that the statement is successful, following each
SQL statement.
106
Teradata
107
40. Teradata Questions & Answers Teradata
Parsing Engine: Parsing Engine receives the query from the user, parses it and
prepares the execution plan.
BYNET: BYNET receives the execution plan from the Parsing Engine and
dispatches to the appropriate AMP.
AMP: AMP is responsible for storing and retrieving rows. It stores the data in the
virtual disk associated with it. In addition to this, AMP is responsible for lock
management, space management, sorting and aggregation.
FastLoad MultiLoad
108
Teradata
6. What is the efficient method for avoiding duplicate row checking for SET
tables?
You can define either Unique Primary Index or Unique Secondary Index to avoid
duplicate row checking.
OR
Primary keys doesnt accept NULLs whereas Primary Index accepts NULL
values.
Primary keys are unique whereas Primary Index can be either unique (UPI) or
non unique(NUPI).
10. What are all the different ways of accessing data in Teradata tables?
Data can be accessed in 3 different ways:
Through Primary Index
Through Secondary Index
Full Table Scan
109
Teradata
12. How to identify the number of rows in each AMP for a specific table?
Teradata
ANSI
Teradata mode is set using SET SESSION TRANSACTION BTET; ANSI mode is set
using SET SESSION TRANSACTION ANSI;
16. What will happen if the input file for a FastLoad script contains duplicate
records?
The duplicate records will be rejected from loading the target tables and will be
inserted into the UV table.
110
Teradata
22. How do you release the lock on the table after FASTLOAD failure?
You can just keep the BEGIN LOADING and END LOADING statement and submit the
FASTLOAD script. Other option is to drop the table and create the table again.
In Phase 1, it brings the data in 64K blocks and sends them to the target AMPs.
Each AMP will then hash redistribute the rows to their target AMPs.
In Phase 2, rows are sorted by their row hash order and written into the target
table.
Phase 2: DML Transaction Phase Verifies the syntax of DML statements and
brings them to Teradata system.
Phase 3: Acquisition Phase Brings the input data into work tables and locks
the table.
111
Teradata
31. Which is faster way to delete data from Tables? DELETE FROM statement
or MultiLoad DELETE?
MULTILOAD DELETE is faster since it deletes the records in blocks. DELETE FROM will
delete row by row.
Stored procedure returns one or more values whereas Macros can return one or more
rows. In addition to SQL, stored procedure may contain SPL statements.
Both FastLoad and MultiLoad load the data in 64K blocks whereas BTEQ will process
one row at a time.
If the query uses partitioned columns then it will result in partition elimination,
which will greatly improve the performance.
Partition eliminates other partitions and accesses only the partitions that
contain the data.
You can easily drop the old partitions and create new partitions.
39. If a Secondary Index is created on a table, will the size of the table increase?
Why?
Yes. Secondary index requires sub-tables which require permanent space.
112
Teradata
40. If a partitioned primary index is added to a table, will the size of the table
increase? Why?
Yes. Whenever partitioned primary index is added, then each row occupies additional
2 or 8 bytes for the partition number.
41. How do you identify the 2nd highest value from a table?
You can use RANK function on the specified column with descending order with
Qualify = 2 condition.
There are three confidence levels in Teradata: High Confidence, Medium Confidence,
and Low Confidence.
44. What is the difference between NUSI and Full table scan?
Both NUSI and Full Table Scan (FTS) will access all the AMPs but FTS will access all
the blocks within the AMP whereas NUSI will access the blocks only if the sub-table
contains the qualifying rows.
45. How do you skip first few records from the input file while loading into
Teradata?
In BTEQ mode, SKIP command can be used to skip the records.
46. Which data type is better for storing employee Age information?
BYTEINT. It occupies only one byte and can store values up to +127.
113
Teradata
114