Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

計算後の項目を他のオブジェクトで使用する方法について

お世話になります。

以下のことで助言いただければ幸いです。

OracleDBの項目      Key     col_Ora

SQLServerDB の項目  Key     col_SQL

があるとして、Keyで結合し、, (col_Ora + col_SQL)をテーブル項目のように

色々なオブジェクトで使用したいのです。(計算のスクリプトを埋め込めないオブジェクトにも)

私が考えた方法は

①DBをロードスクリプト内で結合し (col_Ora + col_SQL)を1つの項目としてロードする

②別々にロードした後、(col_Ora + col_SQL)をシート上で定義し直し、一つの項目として扱い、計算を入力できないオブジェクトにも使用

しかし、①も②も方法が分かりません。

①のように別々のDBでもロードスクリプト内で結合し、計算後にロードできれば一番良いのですが・・・

どちらも不可能なのでしょうか。

本当に困っています、よろしくお願いいたします。

1 Solution

Accepted Solutions
kogasawara
Partner - Creator
Partner - Creator

データベースからのロードではないですが、インラインロードで簡単なサンプル作成してみました。

------------------------------------------------------------

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側でも、同じような記述でうまくいくと思います。

View solution in original post

6 Replies
kogasawara
Partner - Creator
Partner - Creator

Concatenate にて、別々のDBから取得したテーブルを結合させれば可能かと思います。

テーブル結合後に、resident で結合したテーブルからデータを取得して、col_Ora + col_SQL

を取得できるかと思います。

table1:

load

table2:

concatenate

load

table3:

load

col_Ora + col_SQL as ○○

resident table1;

あとはdrop tebleなどで不要なテーブルを削除すればいいと思います。

Not applicable
Author

返信ありがとうございます。

教えていただいた方法で、

異なるDBの項目を用いた計算を行うと

エラーも発生せずにロードすることができました。

ありがとうございます。

しかし、結果としまして

KEY     col_Ora     col_SQL     計算後○○

100             -               1                   -

100             2               -                   -

となってしまいます。

KEY     col_Ora     col_SQL     計算後○○

100             2               1                   3

と表示させたいのですが、

もう少し知恵をお貸しいただけませんでしょうか。

よろしくお願いいたします。

kogasawara
Partner - Creator
Partner - Creator

データベースからのロードではないですが、インラインロードで簡単なサンプル作成してみました。

------------------------------------------------------------

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側でも、同じような記述でうまくいくと思います。

Not applicable
Author

joinに書き換えることで思っていたデータが表示できました!

本当にありがとうございます!

kogasawara
Partner - Creator
Partner - Creator

無事にできてよかったです。

こちらこそ、イメージがうまくできずに間違った内容をお伝えしてしまい。

すみませんでした。

Not applicable
Author

おがけんさんのおかげで2、3日ずっと悩んでたことが

解決できたので感謝です。私が最初の説明に結果例を出すべきでした。

また何かあればよろしくお願いいたします。