100 万行を超えるデータ テーブルの場合、データ フィルターは非常に遅くなります。
数秒かかる
- データフィルターで新しい列をアクティブ化する
- フィルターにテキストを入力します: 文字ごとに数秒かかります。
- フィルター内の文字を削除する
なぜ?
new table("test", add rows(2000000), new column ("col",Character, Set each value(Char(random integer(2000000)))))
@hogi さん、ご報告いただきありがとうございます。また、発生している遅延の問題をここでご説明いただき、ありがとうございます。この問題は認識しており、JMPの今後のリリースで、行数の多いテーブルのパフォーマンス改善に取り組んでいます。パフォーマンス改善には時間がかかり、リグレッションが発生しないことを確認するためのテストも必要となるため、複数のリリースにまたがる作業になると思われますので、ご期待に沿えるようお願いいたします。ありがとうございます!
JMP テクニカル サポート。
素晴らしいですね。
興味深いのは、データ フィルター内のエントリの数です。
100 万件を超えるエントリを持つ「インデックス」列がある場合、データ フィルターでこのインデックスを使用すると、速度の問題が確実に発生します。
データ フィルターに 20,000 エントリしかないデータ テーブル (テーブル内の行数も同じ) では、問題はありません。
new table("test", add rows(2000000), new column ("col",Character, Set each value(Char(random integer(20000 // was: 2000000
)))))
興味深い²そして驚くべきこと:
補助列を使った事前選択が役立ちます。問題が解決するまでは、これを回避策として使用できます。
元の列の短縮バージョンを含む 2 番目の列を使用します。
new table("test", add rows(2000000), new column ("col_long",Character, Set each value(Char(random integer(2000000)))),
new column ("col_short",Character, set each value(left(:col_long,3)))
)
確かに慣れるのは大変ですが、単一の列を使用するよりもはるかに高速です。
[「54321」は「条件付き」のオンとオフを切り替えた状態で同じ速度で入力されます]