16.20 - 例: ODBCを使用したTeradata DatabaseへのAsterテーブルの読み込み - Teradata Vantage NewSQL Engine

Teradata Vantage™ - NewSQL Engineの分析関数

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1206-162K-JPN
この例では、以下のコードを示します。
  • Aster Databaseでのテーブルの作成と挿入
  • テーブルを所有するTeradata Databaseユーザーの作成
  • tptスクリプト
  • JobVariablesFile
  • tptスクリプトの実行

Aster Databaseでテーブルを作成、挿入するコード

このコードでは、トレーニング テーブル、aster_nb_trainerSCを作成、挿入し、トレーニング テーブルとNaive Bayes分類子関数を使用してモデル テーブル、aster_nb_modelSCを作成します。

/* Create training table */

DROP TABLE IF EXISTS aster_nb_trainerSC;

CREATE TABLE aster_nb_trainerSC (
  id     INT,
  year   INT,
  color  VARCHAR (100),
  type   VARCHAR (100),
  origin VARCHAR (100),
  stolen VARCHAR (100),
  PARTITION KEY (id)
);
/* Populate training table */

INSERT INTO aster_nb_trainerSC VALUES
  (1,3,'red','sports','domestic','Yes'),
  (2,9,'red','sports','domestic','No'),
  (3,1,'red','sports','domestic','Yes'),
  (4,8,'yellow','sports','domestic','No'),
  (5,2,'yellow','sports','imported','Yes');
/* Create model table from training table */

DROP TABLE IF EXISTS aster_nb_modelSC;

CREATE TABLE aster_nb_modelSC distribute by hash(class_nb) AS (
  SELECT * FROM naiveBayesReduce (
    ON (
      SELECT * FROM naiveBayesMap (
        ON aster_nb_trainerSC 
        Response ('stolen') 
        NumericInputs ('year') 
        CategoricalInputs ('color','origin','type')
      )
    ) PARTITION BY class_nb
  )
);

Teradata Databaseユーザーを作成するコード

CREATE USER sample_user AS
  PASSWORD = sample_user
  PERM = 10e6*(HASHAMP()+1);

GRANT ALL ON dbc TO sample_user;

tptスクリプト、astermodel.tpt

DEFINE JOB PRODUCT_SOURCE_LOAD
DESCRIPTION 'LOAD PRODUCT DEFINITION TABLE'
(
  DEFINE SCHEMA PRODUCT_SOURCE_SCHEMA
    DESCRIPTION 'PRODUCT INFORMATION SCHEMA'
    (
    class_nb VARCHAR(128),
    variable_nb VARCHAR(128),
    type_nb VARCHAR(128),
    category VARCHAR(32),
    cnt BIGINT,
    sum_nb FLOAT,
    sum_sq FLOAT,
    total_cnt BIGINT
    );

  STEP STEP_CREATE_DDL
  (
    APPLY
      ('DROP TABLE '||@TargetTable||';'),
      ('CREATE MULTISET TABLE '||@TargetTable||'(
         class_nb VARCHAR(128),
         variable_nb VARCHAR(128),
         type_nb VARCHAR(128),
         category VARCHAR(32),
         cnt BIGINT,
         sum_nb FLOAT,
         sum_sq FLOAT,
         total_cnt BIGINT) NO PRIMARY INDEX;
      ')
      TO OPERATOR ($DDL()[1]);
    );
    Step Insert Tables
    (
      APPLY
        ('Ins '||@TargetTable||'(
          :"class_nb"
          ,:"variable_nb"
          ,:"type_nb"
          ,:"category"
          ,:"cnt"
          ,:"sum_nb"
          ,:"sum_sq"
          ,:"total_cnt");'
        )
        TO OPERATOR ($LOAD()[1])

    SELECT * FROM OPERATOR ($ODBC(PRODUCT_SOURCE_SCHEMA)[1]);
  );
);

JobVariablesFile、attr.txt

DDLTdpid = 'td_host_name_or_ip'
,DDLUserName = 'alice'
,DDLUserPassword = 'alice'
,DDLErrorList = '[3807]'
,DDLPrivateLogName = 'DDL001S1'
,TargetTable = 'td_nb_modelsc'
,ODBCPrivateLogName = 'ODBC039P1'
,ODBCDSNName = 'shruti'
,TruncateData = 'Y'
,ODBCUserName = 'db_superuser'
,ODBCUserPassword = 'db_superuser'
,LOADPrivateLogName = 'ODBC039P1'
,LOADTDPID = 'td_host_name_or_ip'
,LOADUserName = 'alice'
,LOADUserPassword = 'alice'
,SelectStmt = 'SELECT * FROM aster_nb_modelsc;'
,LOADTargetTable = 'td_nb_modelsc'

tptスクリプトを実行するコマンド

tbuild -f aster_model.tpt -v attr.txt -j urr1