2015-01-07 191 views
0

因此,當我探索Teradata時,我提出了一個問題。 那就是如何快速創建代理鍵,高效,在Teradata中創建密鑰

  • 使用ETL工具,如Informatica的有限制最多,它可生成密鑰像什麼後序列發生器可以創建最多隻有2十億,?
  • Teradata有一個標識列可以替代使用,但不會妨礙並行性,就像它不會一次插入數據1行並等待標識列的值在插入另一行之前遞增一樣。 如果是這種情況,應該怎麼做才能解決這個問題,以便可以以高性能插入數十億行。

如果我錯了,請幫助我,這是Teratada的這項大技術的新功能。

謝謝。

回答

0

Informatica序列生成器的限制爲9223372036854775807.您可以使用Alpha_numneric序列代替A1,A2 ... A9223372036854775807以及B1,B2 ... B9223372036854775807。這會將限制增加到27 * 9223372036854775807,並且這個限制對於任何數據集來說都是不完全的。爲了實現這個,你需要設置序列發生器的循環屬性。

+0

問題是序列發生器是不是失敗證明如果你有提交間隔爲1000和你加載失敗在199序列發生器將不會回滾和下一次從200年以後生成值創建密鑰生成的差距。 現在把這個場景放在你有100萬次提交間隔的地方。 –

+0

然後,我們可以使用Variable端口生成seq(使用Max + 1),並可以使用任何文件或數據庫目標來保留最後一個Max值。請注意,對於十進制小數計算,您必須在會話配置中啓用高精度。 –

0

您的里程可能會有所不同,但我們已成功通過在目標表中取代代目標鍵的MAX(),然後使用ROW_NUMBER()增加插入到目標表中的新記錄的替代鍵。

此方法的成功取決於您的ETL方法。對我們來說,我們將數據加載到應用我們轉換的階段表。一旦數據被加載到分段數據的UPSERT到目標表是非常簡單的使用MERGE或簡單UPDATE/INSERT陳述。