简体   繁体   English

易失表和多集易失表有什么区别?

[英]What is the difference between volatile table and multiset volatile table?

I am looking at some SAS/Teradata code and confused on the below. 我正在查看一些SAS / Teradata代码,并在下面感到困惑。 This has a volatile table and a multiset volatile table. 它具有一个易失表和一个多集易失表。 What is the difference between the two? 两者有什么区别? Also, why does this specify WITH DATA PRIMARY INDEX? 另外,为什么要指定WITH DATA PRIMARY INDEX? Also for the second one, why does this collect statistics? 同样对于第二个,为什么要收集统计信息?

  PROC SQL ;
CONNECT TO TERADATA (AUTHDOMAIN=IDWPRD SERVER= IDWPRD MODE=TERADATA);
EXECUTE(
CREATE VOLATILE TABLE REQ1_1_CODE_INS AS (
SELECT 
    ACCT_REF_NB, 
    CAST(NON_MNTR_TXN_PST_TS AS DATE) AS ADJ_DT,
    SRC_DATA_DT,
    NON_MNTR_TXN_SEQ_NB,
    SRC_CRE_USER_ID,
    PROC_TRAN_CD,
    PROC_TRCK_ID,
    MAX(CASE WHEN NON_MNTR_TXN_SBTP_CD = '0009' THEN TRIM(NEW_NON_MNTR_TXN_DTL_TX) ELSE NULL END) AS CARD_NB
FROM DWHMGR.PST_NON_MNTR_TXN
WHERE NON_MNTR_TXN_TP_CD ='255'
    AND CAST(NON_MNTR_TXN_PST_TS AS DATE) >= '2016-03-13'
    AND CAST(NON_MNTR_TXN_PST_TS AS DATE) <= '2017-11-09'
GROUP BY 1,2,3,4,5,6,7
HAVING TXN_DT <= ADD_MONTHS(ADJ_DT, -24) 
        OR UPPER(MRCH_NM) LIKE '%CHECK TO%' 
        OR UPPER(MRCH_NM) LIKE '%BALANCE TRANSFER%' 
)WITH DATA PRIMARY INDEX(ACCT_REF_NB) ON COMMIT PRESERVE ROWS;
) BY TERADATA;
CREATE TABLE UNIX.REQ1_1_CODE_INS AS SELECT * FROM CONNECTION TO TERADATA(SELECT * FROM REQ1_1_CODE_INS);

/* REFERENCE TABLE */ / *参考表* /

EXECUTE(
CREATE MULTISET VOLATILE TABLE _ACCTS_00 AS (
    SELECT DISTINCT ACCT_REF_NB FROM REQ1_1_CODE_INS
) WITH DATA PRIMARY INDEX(ACCT_REF_NB) ON COMMIT PRESERVE ROWS;
) BY TERADATA;
EXECUTE( COLLECT STATISTICS ON _ACCTS_00 PRIMARY INDEX(ACCT_REF_NB); ) BY TERADATA;

Volatile table is like work table in SAS, it just is there for particular session. 易失性表就像SAS中的工作表一样,仅用于特定会话。

Teradata has 2 kinds of table, one is set table and another is multiset table. Teradata有2种表,一种是设置表,另一种是多集表。 Set table does not allow row level duplicates, where multiset table allows row level duplicates. 集合表不允许行级重复,而多集表则允许行级重复。 Default is set table if nothing is mentioned in create table statement. 如果create table语句中未提及任何内容,则默认设置为set table。

Teradata also needs a primary index and needs to mentioned as with data primary index(index name). Teradata还需要一个主索引,并且需要与数据主索引(索引名称)一起提及。 with data gets data another option is with no data 有数据获取数据另一个选择是没有数据

collect stats is big concept, basically it collects demographic data for primary index, which in return helps in future queries dependent on that index. 收集统计信息是一个大概念,基本上它收集主要索引的人口统计数据,这反过来有助于将来依赖该索引的查询。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM