收集teradata 14中的统计信息-不允许在同一组列上使用不同列顺序的多个统计信息
Teradata 14(由TC提供)还有另一个妙招,可能会让人大吃一惊 使用如下定义的表:收集teradata 14中的统计信息-不允许在同一组列上使用不同列顺序的多个统计信息,teradata,Teradata,Teradata 14(由TC提供)还有另一个妙招,可能会让人大吃一惊 使用如下定义的表: CREATE TABLE test( CALENDAR_DATE DATE FORMAT 'YY/MM/DD' NOT NULL ,RETAIL_OUTLET_NUMBER INTEGER NOT NULL ,BASE_PRODUCT_NUMBER INTEGER NOT NULL ) PRIMARY INDEX (calendar_date, retail_o
CREATE TABLE test(
CALENDAR_DATE DATE FORMAT 'YY/MM/DD' NOT NULL
,RETAIL_OUTLET_NUMBER INTEGER NOT NULL
,BASE_PRODUCT_NUMBER INTEGER NOT NULL
)
PRIMARY INDEX (calendar_date, retail_outlet_number, base_product_number)
此SQL将失败:
COLLECT STATS test COLUMN(
calendar_date, base_product_number, retail_outlet_number);
出现以下错误消息:
3706:语法错误:不允许在同一组列上具有不同列顺序的多个统计信息
但是:
好的
现在,collect stats语句和主索引中的列顺序必须相同
有没有其他方法可以让它们在不改变列顺序的情况下工作
谢谢…使用Teradata 14,您可以通过显式命名多列统计信息来解决这一问题:
COLLECT STATISTICS
COLUMN (Calendar_Date, Base_Product_Number, Retail_Outlet_Number) AS Stats_CalDate_ProdNum_RtlNum
ON test;
可使用以下方法进行后续回忆:
COLLECT STATISTICS COLUMN Stats_CalDate_ProdNum_RtlNum ON test;
Teradata客户可以通过Teradata@Your Service或您的CSR获得一本橙色手册,其中解释了这一点以及Teradata 14统计数据的其他注意事项。Carrie Ballinger还简要介绍了Teradata 14统计信息的增强功能。这个错误是因为已经按顺序收集了统计信息 日历日期、零售店编号、基本产品编号 不能按不同顺序收集同一列的统计信息。因此,如果你想按你想要的顺序收集,即 日历日期、基本产品编号、零售店编号 你必须首先使用
DROP STATS ON TEST COLUMN(calendar_date, retail_outlet_number, base_product_number);
然后使用您的首选订单再次收款。谢谢您的回复。我担心的是,我的逻辑在我自己的环境中以及在舞台上都能正常工作。但是,当我在生产中使用相同的代码时,它会因给定的错误而失败。这是因为任何Teradata环境设置吗?teradata的数据设备在生产和测试中是不同的。您在每个环境中运行的teradata版本是什么?我在测试和生产中都使用teradata 14。如果两个环境都运行teradata 14,那么如果您不在同一组数据上使用命名的多列统计信息集合,我将看到错误3706列的顺序不同。不应该与环境设置有任何关系。当您在PROD中获取错误后收集统计数据时,是否可能测试中不存在这些统计数据。
DROP STATS ON TEST COLUMN(calendar_date, retail_outlet_number, base_product_number);