2016-09-22 21 views
0

古いクエリを再実行しようとしていて、行サイズの問題が発生しています。いくつかの回避策を取った後、必要なテーブルに2つの値を追加しました。最後の2つのフィールドを追加しようとするたびに、「これは最大行長が長くなりすぎます」という形になります(まっすぐクエリを実行しているかどうか、またはCREATE VOLATILE TABLE ...などクエリ。Teradata volatileテーブルの設定フィールドが大きすぎます

データが最大行長を超えなければならないことを除いて(2016年2月にこのスクリプトが正常に実行されたときとまったく同じデータを引き出す必要があります)私が問題を引き起こしているのは、HELP TABLEを実行したときに2つの電話番号フィールドとアドレスタイプを保持するフィールドの最大長が16000であることです。電話番号はすべて10文字です(予想どおり)、アドレスの種類はたかだか4文字です。

だから、私はとの助けを探していますは、次のとおりです。

    行の長さが長すぎるさておき、私はそれは同じである必要があります言ったようにそこに行の長さが実際に(長すぎるからであることについて、エラーをスローするのTeradataを引き起こす何
  1. データとスクリプトは以前に働いていたので、私は何かがサーバー上でちょうどガークされていないと確信していません)
  2. 3つのフィールドの最大長は有望な候補ですか?もしそうなら、どのように私はそれらを小さくするように強制するのですか(再び、何も返さない値にLENGTHを実行すると、> 10となり、16000の15990が無駄になります)?そして、なぜこのフィールドでは、前回よりフィールドが大きくなるでしょうか?
  3. 最大長が問題でない場合は、問題の診断に何が役立ちますか?参考のため

、私は立ち往生していたスクリプトの部分は、私はこの質問は幅広い側にある知っているが、Googleは他の有用なもの&を上げられていない

CREATE MULTISET VOLATILE TABLE 
--DROP TABLE 
PCP_DATA_2 
AS (
SELECT DISTINCT 
    PA.Prov_Nbr 
    , PA.NPI 
    , OREPLACE(UPPER(TRIM(SDA_MAP.State_Defined_SDA)), ' TEXAS', '') AS SDA 
    , PA."First/Inst Name" 
    , PA.Last_Name 
    , PA.Degree 
    , PA.Spec_Code 
    , PA.Spec_Desc 
    , PA.Hat_Code 
    , PA.Hat_Desc 
    , PA.Group_Nbr 
    , PA.Group_Name 
    , PA.Address1 
    , PA.Address2 
    , PA.City 
    , PA.State 
    , PA.Zip 
    , UPPER(TRIM(SDA_MAP.STD_County_Name)) AS County 
    , PA.Primary_Phone_Nbr 
    , PA.Secondary_Phone_Nbr 
    , PA.Address_Type 
    , PA.Affstat_Code 
    , PA.AfterHrs 
    , PA.Affiliation_ID 

FROM 
    PCP_DATA AS PA 

    LEFT JOIN V_REF_MD_CITY_COUNTY_SDA_CRSWK AS SDA_MAP 
     ON PA.Zip = SDA_MAP.USPS_ZipCode 
) 
WITH DATA PRIMARY INDEX (Prov_Nbr) 
ON COMMIT PRESERVE ROWS; 

を下回っています私のグループのアナリストは、私と同じように困惑しています。

答えて

3

セッションに対して異なる文字セットを使用する前に、このクエリが機能していた場合。

9804:応答行サイズまたは定数行サイズオーバーフローが発生するのは、通常、文字セットとしてUTF-8またはUTF-16を使用するセッションが原因です。

カラムはおそらくLATIN(1文字あたり1バイト)として定義されますが、UTF-16の場合はサイズが2倍になり、UTF-8の場合は3倍になります。結果行の最大サイズは64KBであり、3 * 16000 *(2 | 3)が明らかにこれを超えています(これは実際のサイズではなく、定義されたサイズに基づいています)。

オーバーサイズの列を適切なサイズにキャストすると、VARCharsをCharsに展開するDISTINCTのパフォーマンスも向上します。

関連する問題