こんにちは!
来週は首班指名選挙ですねえ。
日本初の女性首相が誕生してほしいっ!
高市さん頑張って!!
自民党員になろうかな?
なんて最近思ったりしております。
みんなに「ブログ書こうぜ」と言った手前、僕も書かないとなあ…と思いつつ、あんまり長くは書けないので、字数稼ぎしてしまいました。すみません!
さて、「あーーーこういう時ってどう数式書くんだっけ?」とか「コミュ二ティーのどこかで見たんだけど」っていうことありますよね。
そんなネタを扱っていくことにします。
題して「Qlikでコピろー!」コーナー
あなたのQlikを強く豊かに。
Chat GPTに聞くより早いよ(ホントかな?)
記念すべき第1回めは「バイナリーロードをコピペする」の回です。
バイナリーロード(Binary Load)って何?
今さら知らない人もいないのかもしれませんが、Qlikにはバイナリーロード(Binary Load)という機能があります。
Qlikを使っていて、共有したいデータがあれば「QVDファイルにしておく」、これは普通にやってると思います。
でも、「あのアプリから直接データをテーブルごと持ってきたい」というような時に、バイナリーロードを使うとあっという間にできてしまいます。
ごっついアプリがあって、それからちょこっとしたアプリを作って集計したいーというような時に便利です。
今回は、それをコピペでやってしまいましょう。
バイナリーロードの準備
まずはデータを持ってきたい親アプリのアプリIDを調べます。
アプリの「詳細」を開きます。

詳細画面でアプリIDを確認し、コピーしておきます。
これで準備完了です。

因みにこの親アプリのテーブルはこちらです。

新規アプリのデータロードエディタでバイナリーロードを設定する
新規アプリを作成し、データロードエディタを開きます。
Mainセクションの1行目(SET文の上)に以下のような”おまじない”をします。
Binary [アプリID];

以上の設定ができたら、SET分の直下に以下のスクリプトをコピペします。
keeo_tablesのインラインロード分の下に取り込みたいテーブルを指定します(この例では、売上、商品、顧客になります)。
バイナリーロードでは、実は全てのテーブルを持ってきてしまうで、このスクリプトではkeet_tablesで列記したテーブル以外は削除するという処理を行います。
//keep_tableの下に取り込みたいテーブルを指定する
keep_tables:
Load * Inline [
keep_table
売上
商品
顧客
];
For i = 0 to NoOfTables() - 1
//ここでテーブルリストを作る
tables:
Load TableName($(i)) as table_name
AutoGenerate 1;
Next i;
//残したいテーブル名にフラグをつける
Left join(tables)
Load
keep_table as table_name,
1 as keep_flg
Resident keep_tables;
//削除するテーブル名をカンマ区切りの文字列にする
drop_table_concat:
Load
Concat(DISTINCT table_name,',') as drop_table_string
Resident tables
Where keep_flg <> 1;
//削除するテーブル名の文字列を変数に格納する
Let vDropTable = FieldValue('drop_table_string',1);
//不要なテーブルを削除する
Drop Tables $(vDropTable),tables,keep_tables,drop_table_concat;リロードして結果を見てみる
リロードを実行してみます。
結果、以下のように目的とするテーブルのみ取り込むことができました。

まとめ
いかがでしたか?
簡単ですよね。
- 親アプリのアプリIDを調べる
- 新しいアプリのロードスクリプトの1行目にBinaryのおまじないをする
- スクリプトをコピペして、取り込みたいテーブル名を列記する
以上の手順だけで、他のアプリかた必要なテーブルだけをサクっと取り出すことができました。
僕も、いつもコピペだけでやってます(笑)
では次回の「Qlikでコピろー!」をお楽しみに!


