Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

文字列の置換えで良い方法を教えて下さい

ソースの項目でリロード時に文字列の置換えをしようと思い、

ロードスクリプトにて多重IF文にて項目内の値に応じて文字列の置換えをするようにしました。

コード   コード名

 

 01     新規

 

 02     変更

 

  ・       ・

  ・       ・

コード数分だけIF文が多重化しましたが、エラーも出ずに思うような結果が得られました。

が、このような読み込み時の文字列置き換えに関して、

もっと効率の良いスクリプトの記述があるようでしたら教えて下さい。

Labels (1)
1 Solution

Accepted Solutions
kogasawara
Partner - Creator
Partner - Creator

load * inlineのinlineの部分についてはfromと同じだって思って下さい。

そのため、

load 項目A

       項目B

       right(項目C,2) as ○○

       inline

       [項目D,項目E

        01,新規

        02,変更],

       項目F

だとfromで取り込むデータを指定した後に項目名を書いてることになるので、エラーになります。

最終的にやりたいことが理解していないので、正しいかはわかりませんが、

load 項目A,項目B,right(項目C,2) as ○○

from ○○.xls;

load 項目D,

       項目E

       inline

       [項目D,項目E

        01,新規

        02,変更],

みたいにインラインロードはインラインロードのテーブルとして記述する必要があります。

またinline以下で作成した項目がloadの後に記述しないと指定した項目がありません

みたいなエラーになります。

View solution in original post

6 Replies
Tamako_Suzuki
Former Employee
Former Employee

たしかにIFのネストが深くなってしまうとわかりずらいですね。

変換ルールを定義した変換テーブルを作成して、それをロードスクリプトに読み込むようにしたらいかがでしょうか。

ご質問の例ですと、コードとコード名があるテーブルをつくれば、コードで取引データなどの変換したテーブルと連結されるつくりになると思います。また、変換内容が大量でなく簡便なテーブルでよければ、インラインテーブル(ロードスクリプト内で簡易的に作成・変更可能)に作れると思います。

インラインテーブルは、ロードスクリプトのメニューから、挿入>Loadステートメント>インラインロードで作成できます。

Not applicable
Author

回答ありがとうございます。

が、ヘルプで「インラインロード」を参照しましたが、よく利用法が理解できません。

もう少し詳しく教えて頂けませんか?

kogasawara
Partner - Creator
Partner - Creator

インラインロードはロードスクリプト分でデータを作成する方法です。

記述例を書きます。

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

load * inline

[

項目A,項目B,項目C

あああ,かかか,さささ

いいい,ききき,ししし

ううう,くくく,すすす

];

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

上記みたいに、load * inlineで[]の中に作成するデータを「,(カンマ)」区切りで

書きます。

load の後の*はワイルドカードの意味で作成した項目全てをロードって意味に

なります。

なので、作成した項目を関数とかでいじる場合は、

load 項目A

       項目B

       right(項目C,2) as ○○

inline

[];

みたいな書き方もできます。

Not applicable
Author

回答ありがとうございます。

load 項目A

       項目B

       right(項目C,2) as ○○

inline

[];

のような使い方をしたいのですが、具体的には

項目D(コード値)

フィールドには無い項目E(コード名)

例えば

 

 項目D='01' なら 項目Eとして「新規」

 項目D='02' なら 項目Eとして「変更」

   ・

   ・

load 項目A

       項目B

       right(項目C,2) as ○○

       inline

       [項目D,項目E

        01,新規

        02,変更],

       項目F

    ・

こんな感じで良いのでしょうか?

と言いながら実行したらエラーでしたが...

どのような書き方になるのでしょうか?

kogasawara
Partner - Creator
Partner - Creator

load * inlineのinlineの部分についてはfromと同じだって思って下さい。

そのため、

load 項目A

       項目B

       right(項目C,2) as ○○

       inline

       [項目D,項目E

        01,新規

        02,変更],

       項目F

だとfromで取り込むデータを指定した後に項目名を書いてることになるので、エラーになります。

最終的にやりたいことが理解していないので、正しいかはわかりませんが、

load 項目A,項目B,right(項目C,2) as ○○

from ○○.xls;

load 項目D,

       項目E

       inline

       [項目D,項目E

        01,新規

        02,変更],

みたいにインラインロードはインラインロードのテーブルとして記述する必要があります。

またinline以下で作成した項目がloadの後に記述しないと指定した項目がありません

みたいなエラーになります。

Not applicable
Author

回答ありがとうございます。

読み込み「load」文内で指定するものかと勘違いしていました。

load文の後(データ読み込み後)、にinlineにて文字列置換するのですね。

思うようにデータが取得できました。

ただ、この文字列置換(コード値をコード名に置き換えする)を他の読み込みでも共有したいのですが、都度、同じ内容をコピペするしかありませんか?

他に良い共有方法はありますか?