Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
お世話になります.QlikView初心者です。
テーブルボックスオブジェクトの文字列のソートの結果について質問です。
20バイトの文字列属性の列(名前をコードとします)が下の順番でソートされます。
プロパティのソートタブでコードを一番上に配置して、テキストA - > Zで指定しています。
コード
0101999 1
0101999 3
010111960 1
010101005053 1
いずれも、右端の文字1 3 1 1が20バイト目です。間には半角スペースが
入っています。(等幅フォントでないので、位置がそろって見えないです)
希望する並び順は、左から判断してほしいのです。
左の文字から順に判断して
010101005053 1
010111960 1
0101999 1
0101999 3
上記の様に並んでほしいのですが、どのように指定すればよいのでしょうか?
左端から1文字ずつ判断するのが標準の考え方だと思っていました。
間に入っている空白の扱いも気になります。
よろしくお願いします。
Hi Koichi
TMP:
LOAD Text(código) AS código, SubField(código,' ',1) AS Order;
LOAD * Inline
[
código
0101999 1
0101999 3
010111960 1
010101005053 1
];
NoConcatenate
SUMARY:
LOAD * Resident TMP
Order BY Order desc
;
DROP Field Order;
DROP Table TMP;
EXIT Script;
Hi Koichi
TMP:
LOAD Text(código) AS código, SubField(código,' ',1) AS Order;
LOAD * Inline
[
código
0101999 1
0101999 3
010111960 1
010101005053 1
];
NoConcatenate
SUMARY:
LOAD * Resident TMP
Order BY Order desc
;
DROP Field Order;
DROP Table TMP;
EXIT Script;
fer fer 様
返信ありがとうございます。
日本語で失礼します。
早速やってみました。
código
0101999 1
0101999 3
010111960 1
010101005053 1
の結果が得られました。質問の時と結果は変わりませんでした。
fer fer 様の書き込みをそのままコピー&ペーストして
実行したのですが...
なにか指定がおかしかったのでしょうか。
左から順に比較すると
código
010101005053 1
010111960 1
0101999 1
0101999 3
となってほしかったです。
Excelに出力して、código 昇順 でExcel上で並べ替えると
希望の並び順になるので、この方法での運用を検討してみます。
ありがとうございました。
プロパティのソートタブで数式にチェックを入れて
text(列)
と入力して昇順にすれば対応できます。
Hideki Kawahata 様
返信ありがとうございます。
教えていただいたとおり実行しました。結果は
コード
0101999 1
0101999 3
010111960 1
010101005053 1
となりました。
ソートタブで、数式 のみにチェックをつけて
式は Text(コード) で、昇順指定です。
ロードスクリプトは
TMP:
LOAD * Inline
[
コード
0101999 1
0101999 3
010111960 1
010101005053 1
];
です。一度、テープルボックスを削除してからload → テーブルボックス作成
を行いました。作成直後の表示順番と、
ソートタブに数式を設定した後の表示順番が変わりませんでした。
QlikViewバージョンは
12.0.20000.0 です。
ちなみにスクリプトを
[
コード
010101005053 1
010111960 1
0101999 1
0101999 3
];
として、データの記述順を変えて実行すると、
作成直後(ロードしただけですべてデフォルト)は
コード
0101999 1
0101999 3
010111960 1
010101005053 1
の順番(ソートタブは テキスト A->Z でした)でしたが、
ソートタブを数式のみ Text(コード) 昇順 で指定すると
コード
010101005053 1
010111960 1
0101999 1
0101999 3
となり、希望の順番になりました。
ありがとうございました。
私の設定がどこかおかしいのでしょうか?
データの前提条件は20バイトではないのでしょうか?
回答は最初の質問スレッドのデータの前提条件を基にしています。
ご質問に書かれたスクリプトは20バイトになっていないのでうまく行ってないかと思います。
ご指摘いただきましたとおり先ほどのテストは20バイトではありませんでした。
大変失礼いたしました。
今回、20バイトで再度実行してみました。
結果は以下の通りでした。
コード len(コード) mid(コード,20,1)
0101999 1 20 1
0101999 3 20 3
010111960 1 20 1
010101005053 1 20 1
文字の長さと、20バイト目の文字を追加で加えてみた結果です。
ロードスクリプトは
TMP:
LOAD
* ,
len(コード),
mid(コード,20,1)
Inline
[
コード
0101999 1
0101999 3
010111960 1
010101005053 1
];
です。
QlikView初心者なので解りませんが、
・インストールのやり方
・基本的な初期設定
などがおかしいのかもしれません。
もう少し、自分で調べてみます。
丁寧なご回答ありがとうございました。
ソートタブの数式のところをferの指摘しているtext(項目)からsubfield(項目,' ',1)にして降順にすれば
今回のデータでは対応可能です。
最初のferの指摘が正しかったですね、すいません。
ferの方法はスクリプトでの対応で、ソートタブでやる方法と理論的には同じになります。