You are not logged in. This forum allows only logged in users to post. If you want to post in the forum, please log in.
Download
Entwicklung
Konto
Download
Entwicklung
Anmelden
Vergessen Konto/Passwort
Konto erstellen
Sprache
Hilfe
Sprache
Hilfe
×
Anmelden
Anmeldename
Passwort
×
Vergessen Konto/Passwort
Übersetzungsstatus von Deutsch
Kategorie:
Software
Personen
PersonalForge
Magazine
Wiki
Suche
OSDN
>
Finden Software
>
Datenbank
>
Database Engines/Servers
>
OpenOLAP
>
Foren
>
Hilfe
>
数値型でソートできない
OpenOLAP
Beschreibung
Projekt Zusammenfassung
Entwickler-Dashboard
Web-Seite
Entwickler
Bildergalerie
RSS Feed-Liste
Aktivität
Statistiken
Historie
Downloads
Aller Releases-Liste
Statistiken
Ticket
Ticket-Liste
Liste der Meilensteine
Typenliste
Komponentenliste
Liste der zuletzt benutzten Tickets/RSS
Neue Ticket abschicken
Dokumente
Kommunikation
Foren
Forum-Liste
Hilfe (338)
Offene Diskussion (13)
Mailinglisten
Alle Mailinglisten
Neuigkeiten
Foren:
Hilfe
(Thread #6401)
Zurück zur Thread-Liste
RSS
数値型でソートできない (2004-11-16 20:00 by
user03
#11881)
Ticket erstellen
数値型の項目をソートキーとして設定したオブジェクトを作成しても文字型としてソートされてしまいます。
数値順にソートできないでしょうか?
例:A ソートキー=1
B ソートキー=2
C ソートキー=10
はA→B→C ではなくA→C→Bと表示される。
(※ソートキーにしている項目はテーブルではint型)
RE: 数値型でソートできない (2004-11-19 16:37 by
miyamo
#11906)
Ticket erstellen
いつもお世話になっております。
miyamoと申します。
申し訳ありませんがGUIでの操作では、対応できないので、
Postgres内で管理しているディメンション用のテーブルの型を変更する
方法で対応願えればと思います。
1.ソートカラムに数値型を指定しているディメンションのIDを調べる。
→Designer→ディメンション→該当するディメンション画面の「ディメンションID」の項目
2.そのディメンションをカスタマイズしていれば、パーツIDを調べる。
(カスタマイズしていなければ、1)
→Designer→ディメンションのカスタマイズ→該当するディメンションの画面の「パーツID」の項目
psql等で、OpenOLAPのメタDatabaseに接続し、
OpenOLAPのディメンションテーブル(oo_dim_ディメンションID_パーツID)を
以下のように、型変更し、int型のsort_colを作成する。
※Postgresには型変更コマンドがないので、add→drop→addしています。
ここでは、
・ディメンションID=10
・パーツID=1
を想定しているので、
oo_dim_10_1
のテーブルとなっている。
※調査したディメンションID、パーツIDにあわせて書き換えてください。
alter table oo_dim_10_1 add sort_col2 integer;
update oo_dim_10_1 set sort_col2 = to_number(sort_col,'99999999999');
alter table oo_dim_10_1 drop column sort_col;
alter table oo_dim_10_1 add column sort_col integer;
update oo_dim_10_1 set sort_col = sort_col2;
alter table oo_dim_10_1 drop column sort_col2;
******************変更前********************
openolap=# \d oo_dim_10_1
Table "oo_meta.oo_dim_1_1"
Column | Type | Modifiers
-----------------+------------------------+-----------
key | integer | not null
par_key | integer |
col_1 | character varying(50) |
col_2 | character varying(50) |
col_3 | character varying(50) |
col_4 | character varying(50) |
col_5 | character varying(50) |
col_6 | character varying(50) |
sort_col | character varying(256) |
code | character varying(256) |
short_name | character varying(256) |
long_name | character varying(256) |
calc_text | character varying(256) |
time_date | date |
org_level | numeric(2,0) |
cust_level | numeric(2,0) |
leaf_flg | character(1) |
kind_flg | character(1) |
name_update_flg | character(1) |
min_val | numeric(10,2) |
max_val | numeric(10,2) |
******************変更後********************
openolap=# \d oo_dim_10_1
Table "oo_meta.oo_dim_10_1"
Column | Type | Modifiers
-----------------+------------------------+-----------
key | integer | not null
par_key | integer |
col_1 | character varying(50) |
col_2 | character varying(50) |
col_3 | character varying(50) |
col_4 | character varying(50) |
col_5 | character varying(50) |
col_6 | character varying(50) |
code | character varying(256) |
short_name | character varying(256) |
long_name | character varying(256) |
calc_text | character varying(256) |
time_date | date |
org_level | numeric(2,0) |
cust_level | numeric(2,0) |
leaf_flg | character(1) |
kind_flg | character(1) |
name_update_flg | character(1) |
min_val | numeric(10,2) |
max_val | numeric(10,2) |
sort_col | integer |
※ディメンションを削除しない限り、上記テーブルは消えないので、
一度変更すれば、以後Numberでソートされます。
以上です。
Reply to
#11881
RE: 数値型でソートできない (2004-11-19 17:08 by
miyamo
#11908)
Ticket erstellen
いつもお世話になっております。
miyamoと申します。
すいません。テスト不十分で別の場所でエラーがでますので、上記方法は無視してください。別途方法を載せますので、よろしくお願いします。
Reply to
#11906
RE: 数値型でソートできない (2004-11-19 18:00 by
miyamo
#11909)
Ticket erstellen
いつもお世話になっております。
miyamoと申します。
ディメンションテーブルのカラムの型を変更するのではなく、
データの方を書き換える方法でお願いします。
※文字型でも正しくソートされるように、左側に0を追加し、桁数を整える。
以下、手順です(先ほどと同じ部分がほとんどですが、再度記述します。)
1.ソートカラムに数値型を指定しているディメンションのIDを調べる。
→Designer→ディメンション→該当するディメンション画面の「ディメンションID」の項目
2.そのディメンションをカスタマイズしていれば、パーツIDを調べる。
(カスタマイズしていなければ、1)
→Designer→ディメンションのカスタマイズ→該当するディメンションの画面の「パーツID」の項目
psql等で、OpenOLAPのメタDatabaseに接続し、
OpenOLAPのディメンションテーブル(oo_dim_ディメンションID_パーツID)の
sort_colのデータを書き換える。
ここでは、
・ディメンションID=10
・パーツID=1
を想定しているので、
oo_dim_10_1
のテーブルとなっている。
※調査したディメンションID、パーツIDにあわせて書き換えてください。
update oo_dim_10_1 set sort_col = lpad(sort_col,15,'0');
※number型は、最大でも15桁を想定。
また、運用時にCubeを更新した際は、sort_colのデータも書き換わるため、
Designer→キューブマネージャー→SQLチューニング→Cube名→データロード
の画面を開き、該当ディメンションの更新プロシジャーの後にも、
上記update文を追加してください。
*************サンプル******************
-- ディメンションメンバーの更新(1) プロダクトソート
--OpenOLAP Executing Procedure--
SELECT oo_meta.oo_dim_member(10,'public') as a
;
-- ディメンションメンバーの更新(2) プロダクトソート
--OpenOLAP Executing Procedure--
SELECT oo_meta.oo_dim_parts(10,'1') as a
;
-- ディメンションメンバーの更新(3) プロダクトソート
--OpenOLAP Executing Procedure--
SELECT oo_meta.oo_dim_level_adjust(10,'1') as a
;
---↑ここまでは、記述してある。
---↓このUpdate文を追加
update oo_dim_10_1 set sort_col = lpad(sort_col,15,'0');
*************サンプルここまで******************
以上で、大丈夫だと思います。
よろしくお願いいたします。
Reply to
#11908
RE: 数値型でソートできない (2005-01-20 18:09 by
gibap
#12570)
Ticket erstellen
この問題は、回避策でどうこうという問題ではなく、仕様として不適切ですよね。数値型のフィールドは数値としてソートされるべきだと思います。
Reply to
#11881