Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
お世話になります。
以下のことで助言いただければ幸いです。
OracleDBの項目 Key col_Ora
SQLServerDB の項目 Key col_SQL
があるとして、Keyで結合し、, (col_Ora + col_SQL)をテーブル項目のように
色々なオブジェクトで使用したいのです。(計算のスクリプトを埋め込めないオブジェクトにも)
私が考えた方法は
①DBをロードスクリプト内で結合し (col_Ora + col_SQL)を1つの項目としてロードする
②別々にロードした後、(col_Ora + col_SQL)をシート上で定義し直し、一つの項目として扱い、計算を入力できないオブジェクトにも使用
しかし、①も②も方法が分かりません。
①のように別々のDBでもロードスクリプト内で結合し、計算後にロードできれば一番良いのですが・・・
どちらも不可能なのでしょうか。
本当に困っています、よろしくお願いいたします。
データベースからのロードではないですが、インラインロードで簡単なサンプル作成してみました。
------------------------------------------------------------
tab1:
load * inline
[
KEY,col_SQL
100,1
];
join
tab2:
load * inline
[
KEY,col_Ora
100,2
];
load
sum(col_SQL+col_Ora) as col_SQL&col_Ora,
KEY
Resident tab1
Group by KEY;
------------------------------------------------------------
前回との違いは、concatenateではなく、joinしています。
また、集計を出すにはsum関数を記述し最後にgroup byで指定した項目毎に
集計しています。
DB側でも、同じような記述でうまくいくと思います。
Concatenate にて、別々のDBから取得したテーブルを結合させれば可能かと思います。
テーブル結合後に、resident で結合したテーブルからデータを取得して、col_Ora + col_SQL
を取得できるかと思います。
例
table1:
load
table2:
concatenate
load
table3:
load
col_Ora + col_SQL as ○○
resident table1;
あとはdrop tebleなどで不要なテーブルを削除すればいいと思います。
返信ありがとうございます。
教えていただいた方法で、
異なるDBの項目を用いた計算を行うと
エラーも発生せずにロードすることができました。
ありがとうございます。
しかし、結果としまして
KEY col_Ora col_SQL 計算後○○
100 - 1 -
100 2 - -
となってしまいます。
KEY col_Ora col_SQL 計算後○○
100 2 1 3
と表示させたいのですが、
もう少し知恵をお貸しいただけませんでしょうか。
よろしくお願いいたします。
データベースからのロードではないですが、インラインロードで簡単なサンプル作成してみました。
------------------------------------------------------------
tab1:
load * inline
[
KEY,col_SQL
100,1
];
join
tab2:
load * inline
[
KEY,col_Ora
100,2
];
load
sum(col_SQL+col_Ora) as col_SQL&col_Ora,
KEY
Resident tab1
Group by KEY;
------------------------------------------------------------
前回との違いは、concatenateではなく、joinしています。
また、集計を出すにはsum関数を記述し最後にgroup byで指定した項目毎に
集計しています。
DB側でも、同じような記述でうまくいくと思います。
joinに書き換えることで思っていたデータが表示できました!
本当にありがとうございます!
無事にできてよかったです。
こちらこそ、イメージがうまくできずに間違った内容をお伝えしてしまい。
すみませんでした。
おがけんさんのおかげで2、3日ずっと悩んでたことが
解決できたので感謝です。私が最初の説明に結果例を出すべきでした。
また何かあればよろしくお願いいたします。