2016-07-11 9 views
0

私が望んでいるものは、知っている人にとっては非常に簡単な質問です。Teradataからエンタープライズガイドの非常に大きな(11億行)テーブルを読み込む(さらに結合する)

私はSASエンタープライズガイドで(よく働いています)、Teradataのテーブルに対して簡単な左結合を実行しようとしています。

テーブルは非常に大きく(700+列、11bn行)、これまでのところ、プログラムの先頭にあるLIBNAMEステートメントと通常のPROC SQLを使用してデータを読み取っています。

問題は非常に遅いです。私は、左のテーブルで90行を使用して正常に結合を実行し、完了に3時間かかりました。私が使用したい実際のテーブルには、15,000行のようなものがあります。

SQLパススルー方式で接続しようとしましたが、企業のセキュリティ上の制約のために解決できないホストファイルエラーが発生します。

誰もこの種のタスクを実行した経験はありませんでしたか?

私はTeradataで簡単なselect *クエリを実行できることを言及する必要があります。SQLアシスタントは1分(16,666,666 obs/s!)をわずかに超えているので、SAS/Teradata間、またはSAS自体でなければなりません。

私は実際のコードスニペットを私の仕事用マシンに投稿していませんが、これは長年私を悩ませていましたので、何か迷っていると思っていました。

ご協力いただきありがとうございます。

+0

私はテラデータから必要な4列だけを呼び出すので、私は〜700個の不要な列を呼び出しているからです! – iain

+1

テラデータにテーブルを作成/ロードすることは許可されていますか?ほとんどの場合、SAS側で左結合が行われるため、問題はテーブルの全負荷に関係します。 – Jetzler

+0

両方のテーブルはTeradataにありますか?または、SASテーブルとTeradataテーブルを結合しようとしていますか? – Tom

答えて

0

Teradataで揮発性のテーブルを作成すると考えましたか?これはスプールの割り当てで作成されるため、テーブルを作成するための明示的な権限は必要ありません。作成されると、SASデータセットを揮発性テーブルにロードして、テーブルの結合列とフィルタ列に関する統計を収集できます。これはオプティマイザがあなたの「小さな」テーブルに関する人口統計を理解するのに役立ちます。揮発性テーブルはセッションの間だけ持続し、複数のセッションにまたがってアクセスすることはできません。

次に、大規模な表を揮発性表に結合するTeradataにSQLをプッシュダウンするようにSASコードを書き直します。結果はSASに返され、別のデータセットにロードされます。

CREATE VOLATILE TABLE MyTable, NO FALLBACK 
(ColA SMALLINT NOT NULL, 
    ColB VARCHAR(10) NOT NULL 
) PRIMARY INDEX (ColA) 
ON COMMIT PRESERVE ROWS /* This is important */ 
; 

プライマリインデックスは、Teradataがデータを配布してデータにアクセスする方法です。同じ列に配置されたテーブルは「AMPローカル」に参加し、再配布は必要ありません。これは常に可能ではありません。プライマリインデックスの選択では、アクセスパスだけでなく分散も考慮する必要があります。プライマリインデックスは一意でなくてもかまいません。

これが役に立ちます。

1

したがって、SASデータセットをTeradataテーブルに結合し、一致するレコードを戻したいとします。 SASのDBMASTER =データセットオプションを使用することになります。テーブルのどれがより大きいかを指定します。です。 SASにこれを伝えることによって、どのテーブルを移動させるかを知ることができます。

ここでは、librefsがすでに割り当てられており、Teradataテーブルがより大きいと仮定しています - より多くのobs - SASデータセット。

proc sql threads; tdTable。*をsastables.sasTable1、td.tdTable(dbmaster = yes)から選択します。 ここで、tdTable.idNum = sasTable1。idNum;終了する;

偶然、SASデータセットが大きい場合は、MULTI_DATASRC_OPT =オプションを使用することをお勧めします。これらの用語をGoogleで検索するか、SAS/Access to Relational Databasesのマニュアルを参照してください。かなりいい。

幸運。

関連する問題