2017-02-01から1ヶ月間の記事一覧
この記事は、前回書いたデータモデリングの9つのことの6つ目です。 crmprogrammer38.hatenablog.com ファクトテーブルは、DWHでは一番件数が多くなるテーブルなので、1レコードで数バイトの違いが、最終的に数ギガバイトの違いになって現れてきます。 なの…
この記事は、前回書いたデータモデリングの9つのことの5つ目です。 crmprogrammer38.hatenablog.com この辺りからは、ゆるくモデリングしようよという内容になっています。 ディメンションと結合するのはファクトだけで、ディメンションからさらにディメン…
この記事は、前回書いたデータモデリングの9つのことの4つ目です。 crmprogrammer38.hatenablog.com 件数が多ければ多いほど結合の処理時間がかかってきます。 なので、物理的に問題がないなら結合するキー項目のサイズを極力小さくします。 具体的には、 …
この記事は、前回書いたデータモデリングの9つのことの3つ目です。 crmprogrammer38.hatenablog.com ヘッダテーブルと明細テーブルの構成でトランザクションを構成する場合は多いと思います。 そういう時は、ヘッダテーブルと明細テーブルを結合して1つの…
この記事は、前回書いたデータモデリングの9つのことの2つ目です。 crmprogrammer38.hatenablog.com 安定した性能にするなら内部結合です! DWHだと、ファクトの件数が多くて、ディメンションの項目に指定された検索条件を元に、一番最適なファクトの絞…
この記事は、前回書いたデータモデリングの9つのことの1つ目です。 crmprogrammer38.hatenablog.com まず、物理的に1:Nで結合するという点について以下を示しています。 ・ディメンションとファクトで結合する際に、ディメンション側の結合キーはユニー…
DWHのデータモデルでとても有名な"スタースキーマ"。 でも、アプライアンスDBを導入したんだからきちんと正規化した方が後々使いやすいといった意見もあったりします。 私は、スタースキーマはとてもシンプルでわかりやすく、そして結合が少なくて使いやすい…
私の経験として、BI/DWHのプロジェクトは他の業務パッケージのプロジェクトに比べて難しくて失敗しやすいなーと考えています。 明確に、なぜ失敗しやすいのかといった分析結果があるのかもしれませんが、個人的に思うことをつらつらと書いていこうと思います…
TERADATAについての記事を書いてきましたが、他のDWHのアプライアンスDBはどうなんだろうなと思いました。 ただ、調べると、Oracle exadataとTERADATA以外は情報が少ないので、この2つの争いになってるように思います。 TERADATAからOracle exadataに移行し…
開発中に手持ちのExcelデータをTERADATAに入れたいことは多々あります。 ちょっとした件数(10万件程度)を入れるのに便利なツールの紹介です。 通常TERADATAに入れるやり方は、 1.CSVファイルにして、FASTLOADや、MULTILOADのスクリプトを書いてデータを…
Join Indexはクエリーリライト用にあらかじめ結合、集計しておく仕組み TERADTAに、Join Indexという機能があります。 これはOracleのMaterialized Viewをクエリーリライトに特化したような機能で、あらかじめ結合や集計をした結果を保持しておく仕組みです…
UPDATEの文法って、DB毎に癖があって覚えられないのでメモ。 UPDATE [更新するテーブル] FROM [更新元テーブル] SET [更新するカラム] = [更新元テーブル].[更新元カラム] WHERE [更新するテーブル].[結合カラム] = [更新元テーブル].[結合カラム]; TERADATA…
TERADATAは、データを分散している TERADATAは、データを分散させて管理していて、Primary Indexに指定したカラムを元に分散させている。分散された1つはAMPと呼ばれ、1つのDBに複数AMPがある状態となります。(詳細は企業のサイトにあると思います) デー…
TERADATAは分析関数の値でさらにフィルタできる TERADATAのSQLには、独自拡張されたQUALIFY句があります。 QUALIFY句を使うと、分析関数の値でさらにフィルタをかけることができます。 例えば、金額を大きい順に並べて100番までの商品を取得したい場合は次の…
文字コードで改行やタブを指定したい Oracleのchr関数のようなものを探していましたが、関数はなく次のように書けることがわかりました。 --改行コード select 'AAA' || '0A'XC || 'BBB' --Tab select 'AAA' || '09'XC || 'BBB' 独特だなーと思いました。
文字同士で処理する際に、文字コードが揃っていることを確認しよう 以前、TERADATAではカラム単位に文字コードが指定できるということを書きました。 crmprogrammer38.hatenablog.com カラムをLATINで定義できれば、UNICODEの半分のサイズとなるので、 ・デ…
TERADATAのJDBCドライバにはFASTLOADモードが用意されています。 TERADATA12頃から、JDBCでFASTLOADモードが追加されました。 crmprogrammer38.hatenablog.com 前回TERADATAにJDBCを使ってデータをいれるときは、addBatchを使ってまとめて登録した方が早いと…