Qlikで他のアプリから直接テーブルを取ってこれるBinary Loadは超便利!

こんにちは!
来週は首班指名選挙ですねえ。
日本初の女性首相が誕生してほしいっ!
高市さん頑張って!!
自民党員になろうかな?
なんて最近思ったりしております。

みんなに「ブログ書こうぜ」と言った手前、僕も書かないとなあ…と思いつつ、あんまり長くは書けないので、字数稼ぎしてしまいました。すみません!

さて、「あーーーこういう時ってどう数式書くんだっけ?」とか「コミュ二ティーのどこかで見たんだけど」っていうことありますよね。
そんなネタを扱っていくことにします。
題して「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でコピろー!」をお楽しみに!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次