レコードのインデックス付け
インデックスは、独立したインデックス ファイル(.inx ファイル)を作成します。このファイルによって、物理的な順序(つまり、未処理データの順序)ではなく、シーケンシャルな順序で Analytics テーブル内のレコードにアクセスできます。
インデックスは、テーブル内のデータを物理的に並べ替えません。ただし、テーブルのインデックスがアクティブであるときは、ビュー内のデータは、インデックスで指定された順序に従って並べ替えられ、分析は、この順序に基づいてデータを処理します。テーブルに複数のビューがある場合は、すべてのビューがアクティブなインデックスの対象になります。
インデックスがアクティブなときは、ステータス バーのレコード数の前に、「インデックス」という語が表示されます。たとえば、「インデックス レコード: 500」と表示されます。
インデックスがアクティブでないときは、ビュー内のレコードは元の物理的な順序に戻ります。Analytics テーブルを開くとき、既存のすべてのインデックスは、デフォルトで非アクティブになっています。
メモ
レコードの並べ替えは、インデックスを作成することの代替方法です。状況によっては、並べ替えがより良い選択となることがあります。詳細については以下を参照 並べ替えまたはインデックス
インデックスとフィールド型
演算フィールドや一時的に作成した式など、データ型に関係なく、あらゆる種類のフィールドのインデックスを作成することができます。
論理フィールドでのインデックスでは、[フィールド リストにフィルターを含める]を選択する必要があります([ツール > オプション > インターフェイス])。
単一テーブルの複数のインデックス
単一のテーブルに対して複数のインデックスを作成し、必要に応じてインデックス間を切り替えることができます。これは、データのセットを一次審査する場合に役立ちます。一度にアクティブにできるインデックスは 1 つだけです。
入れ子のインデックス
1 つのキー フィールドを使用してレコードのインデックスを作成することができます。また、複数のキー フィールド(主キー フィールド、副キー フィールドなど)を基にしてインデックスを作成し、入れ子のインデックス構成を作成することができます。
入れ子のインデックスでは、キー フィールド全体で昇順と降順が混在しても、データ型が混在してもかまいません。
昇順と降順が混在する入れ子のインデックス
並べ替えられていない取引テーブルで、日ごとの最大取引金額を表示できます。日付キー フィールドで昇順に、各日の金額キー フィールドで降順に、テーブルにインデックスを作成します。
Date フィールド (昇順) |
Amount フィールド (降順、入れ子) |
---|---|
15 Jan 2011 |
$2300.00 |
15 Jan 2011 |
$1200.00 |
15 Jan 2011 |
$600.00 |
16 Jan 2011 |
$900.00 |
16 Jan 2011 |
$100.00 |
17 Jan 2011 |
$4700.00 |
17 Jan 2011 |
$900.00 |
17 Jan 2011 |
$500.00 |
インデックスは Analytics テーブルに制限されます
インデックスは Analytics テーブル、つまり、.fil ソース データ ファイルを持つテーブルに限定されています。ローカル ベースとサーバー ベースの Analytics テーブルは、.fil ファイルを持っている場合は、どちらもインデックスを作成できます。
データベース プロファイルを使用して接続しているデータベース テーブルのインデックスを作成することはできません。これらには .fil ファイルがありません。データは、データベースから直接読み取られます。このような状況でデータを順序付けるには、データベースへのアクセス時に、データ定義ウィザードで SQL の ORDER 句を使用することができます。
一部の Analytics コマンドに必要なインデックス
インデックスは、Analytics テーブルを検索するときに、[検索]ダイアログ ボックスで[文字検索]および[式検索]オプションを使用するための前提条件です(それぞれのオプションは、FIND コマンドと SEEK コマンドに相当します)。
次の場合にのみこれらのオプションを使用できます。
- テーブルにインデックスが作成されている
- インデックスが有効である
- インデックスの主キー フィールドが昇順にインデックスが作成された文字フィールドである
テーブルには入れ子のインデックスを持つことができますが、検索されるのは主キー フィールドだけです。
条件付きインデックス
インデックスには、[If]、[先頭]、[次]、および[While]パラメーターを含めることができます。これらが指定されている場合、インデックスは条件付きインデックスになります。条件付きインデックスがアクティブなときは、条件に一致するレコードのみがインデックス付けされます。それらが表示されて、分析に利用できます。
インデックスをアクティブにするたびに、条件が自動的に再適用されます。条件付きインデックスを使って大きなテーブルのサブセットを作成することにより、特定のタイプの分析を円滑にすることができます。
If パラメーターを持つ条件付きインデックスがアクティブなときは、ステータス バーのレコード数の前に、「フィルターされたインデックス」という語が表示されます。たとえば、「フィルターされたインデックス レコード: 500」と表示されます。[先頭]、[次]、および[While]パラメーターを持つ条件付きインデックスがアクティブなときは、条件の付いていないインデックスと同様、レコード数の前には「インデックス」という語が表示されます。
インデックスとフィルター
If パラメーターまたはフィルターを持つ条件付きインデックスを作成する際には、グローバル フィルター(ビューのフィルター)、ローカル フィルター(コマンド内のフィルター)、またはその両方を含めることができます。
次の表は、インデックスにフィルターを含める例と、サンプル データに対するインデックスの効果を示します。
フィルターはインデックス構文の一部なので、ログや、インデックスの詳細で見ることができます。詳細については、インデックスの詳細の表示を参照してください。
フィルターの種類 |
説明/インデックス構文 |
vendor_ID |
trans_amount |
---|---|---|---|
なし |
インデックスなし (物理的な順序) |
212 108 359 108 359 212 359 212 359 108 |
1400.00 3400.00 1600.00 1100.00 3400.00 1200.00 2200.00 1700.00 1400.00 2300.00 |
グローバル |
インデックスには、業者番号 359 のレコードのみが含まれます INDEX ON trans_amount TO "vendor 359 transactions" グローバル フィルター:vendor_ID = "359" |
359 359 359 359 |
1400.00 1600.00 2200.00 3400.00 |
ローカル |
インデックスには、取引金額が $2000 以上のレコードのみが含まれます INDEX ON trans_amount IF trans_amount >= 2000 TO "trans amount 2000 or greater" |
359 108 108 359 |
2200.00 2300.00 3400.00 3400.00 |
グローバル-ローカル |
インデックスには、業者番号 359 のうち取引金額が $2000 以上のレコードのみが含まれます INDEX ON trans_amount IF trans_amount >= 2000 TO "vendor 359 transactions 2000 or greater" グローバル フィルター:vendor_ID = "359" |
359 359 |
2200.00 3400.00 |
手順
レコードのインデックス付け
アクティブなテーブルの 1 つまたは複数のキー フィールドによって、レコードをインデックス付けすることができます。また、その結果作成されるインデックスを利用して、元となるデータの物理的な順序に影響を与えることなく、一時的にレコードを並べ替えることができます。
- [データ > インデックス]の順に選択します。
- [メイン]タブで、次のいずれかを行います。
- [インデックスの対象]リストから、インデックスを作成するフィールドを選択します。
- [インデックスの対象]をクリックして、フィールドを選択するか、または式を作成します。
複数のフィールドを選択する場合、フィールドを選択する順序が入れ子になったインデックスの優先度を示します。レコードが最初に選択したフィールドでインデックス付けられ、最初のフィールドに複数の値の出現が存在する場合は、次にそのグループ内のレコードが 2 番目に選択したフィールドでインデックス付けられる、というようになります。追加のフィールドを選択していない場合は、グループ内のレコードは元と同じ並び順が保持されます。
式や演算フィールドを使用したインデックスの詳細については、演算キー フィールドを使った並べ替えとインデックスの作成を参照してください。
メモ
インデックスが作成されるフィールドの合計の長さは、247 文字を超えてはいけません。
- [インデックスの対象]をクリックした場合は、任意で並べ替えの矢印 (デフォルトは昇順)をクリックすることにより、1 つまたは複数の選択したフィールドのインデックスを降順にするよう指定することができます。
-
現在のビューの中に処理から除外したいレコードがある場合は、[If]テキスト ボックスに条件を指定します。直接入力するか、または[If]ボタンをクリックし、式ビルダーを利用して IF ステートメントを作成します。
メモ
If 条件は、任意の範囲オプション(First、Next、While)が適用された後に、テーブルに残るレコードに対してのみ評価されます。
IF ステートメントは、ビュー内のすべてのレコードを判断し、指定された条件を満たさないレコードを除外します。
- 次のいずれかを実行します。
- [保存先]テキスト ボックスに、インデックス ファイルの名前を指定します。
- [保存先]ボタンをクリックして、[保存]または[ファイルを保存する名前]ダイアログ ボックスでインデックス ファイル名を指定するか、または既存のインデックス ファイルに上書きする場合は、そのファイルを選択します。
Analytics によってインデックス ファイル名があらかじめ設定されている場合は、その設定されている名前を受け入れることも、あるいは変更することもできます。
メモ
インデックスの名前は、64 文字までの英数字に制限されます。名前にはアンダースコア文字(_)を使用できますが、他の特殊文字やスペースは使用できません。名前の先頭を数字にすることはできません。
ヒント
インデックスには、そのインデックスによって設定される順序付けの性質を説明する、意味のある名前を付けることが最良の策です。たとえば、テーブルを Date によって昇順で並べ、日にちごとでは Amount によって降順で並べるインデックスならば、"Date_Amount_D" という名前にします。
- インデックスを直ちにアクティブにしたいかどうかに応じて、[出力テーブルを開く]をオンまたはオフにします。
テーブルのインデックスはいつでも、ビューの右上にある[インデックス]ドロップダウン リストから選択することで、アクティブにすることができます。
- [詳細]タブをクリックします。
- [適用範囲]パネルで、適切な出力オプションを選択します。
- すべて – デフォルトで、このオプションが選択されます。ビュー内のすべてのレコードを処理するように指定するには、選択されたままにしておきます。
- 先頭 – このオプションを選択してテキスト ボックスに数を入力すると、ビュー内の先頭レコードから処理が開始され、指定した件数のレコードのみが処理対象とされます。
- 次 – このオプションを選択してテキスト ボックスに数を入力すると、ビュー内で現在選択されているレコードから処理が開始され、指定した件数のレコードのみが処理対象とされます。行内のデータではなく、左端の列の実際のレコード番号が選択されている必要があります。
- While – WHILE ステートメントを使用して、特定の条件または条件のセットに基づいてビュー内のレコードの処理を制限するには、このオプションを選択します。[While]テキスト ボックスに条件を入力するか、または[While]ボタンをクリックし、式ビルダーを利用して WHILE ステートメントを作成することができます。
WHILE ステートメントでは、指定した条件が true と評価される間のみ、ビュー内のレコードを処理することができます。条件が false と評価されるとすぐに処理が終了し、それ以上レコードは判断されません。While オプションは、"すべて"、"先頭"、または "次" オプションと組み合わせて使用することができます。1 つの制限に達するとすぐに、レコードの処理が停止します。
メモ
"先頭" または "次" オプションで指定されたレコード数は、テーブル内の物理的な順番またはインデックス順のレコードを参照するもので、ビューに適用されたフィルターやクイック ソートは一切無視します。ただし、分析操作の結果ではすべてのフィルターを考慮します。
ビューでクイック ソートが実行されている場合、"次" は "先頭" のように動作します。
- [OK]をクリックします。
- 上書きを確認するメッセージが表示されたら、適切なオプションを選択します。
インデックスのエントリが、ビュー タブの[インデックス]ドロップダウン リストに追加されます。[出力テーブルを開く]を選択した場合、インデックスがアクティブ化され、インデックスに従ってテーブルが並べ替えられます。
インデックスを非アクティブにする
インデックスは、作成時、または作成後いつでもアクティブにすることができます。Analytics テーブルを開くとき、既存のすべてのインデックスは、デフォルトで非アクティブになっています。
- インデックスをアクティブにするには、次のいずれかを行います。
- インデックスの作成時に、すぐにインデックスをアクティブにするには、[インデックス]ダイアログ ボックスで[出力テーブルを開く]をオンにします。
- ビューの右上隅にある[インデックス]ドロップダウン リストからインデックスを選択します。
- インデックスを非アクティブにするには、次のいずれかを行います。
- ビューの右上隅にある[インデックス]ドロップダウン リストで "(なし)" を選択します。
- 別のインデックスに切り替えます。
- テーブルを閉じます。
インデックスの詳細の表示
インデックスの詳細(つまり、特定の Index コマンドの実際の構文)を表示することができます。コマンド構文には、キー フィールド、およびすべてのパラメーター、フィルター、式が含まれます。インデックスの詳細は、特定のインデックスがテーブル内のレコードをどのように処理するのかを明らかにします。
- インデックスを含んでいるテーブルを開きます。
- ナビゲーターでテーブルを右クリックし、[プロパティ]を選択します。
- [インデックス]タブをクリックし、インデックス名を選択してから[詳細]をクリックします。
[インデックス プロパティ]ダイアログ ボックスに、インデックスの詳細が表示されます。
- [
- コマンド]には、Index コマンドの構文が、ローカル フィルターも含めて表示されます。
- [フィルター]には、インデックスの一部であるグローバル フィルターの構文が表示されます。
- [OK]をクリックし、もう一度[OK]をクリックして[テーブル プロパティ]ダイアログ ボックスを終了します。
インデックスの管理
[テーブル プロパティ]ダイアログ ボックスの[インデックス]タブで、インデックスのコピー、名前変更、または削除を行うことができます。また、ここでインデックスを追加することもできます。
メモ
このようなメンテナンス タスクは、Analytics を介してのみ実行できます。直接 Windows フォルダーでインデックス ファイル(.inx ファイル)の名前を変更すると、Analytics でそのインデックスを次回アクティブにしたとき、元の名前でインデックス ファイルが自動的に再作成されます。直接インデックス ファイルを削除すると、そのインデックスを次回アクティブにしたとき、インデックス ファイルが自動的に再作成されます。
- インデックスを含んでいるテーブルを開きます。
- ナビゲーターでテーブルを右クリックし、[プロパティ]を選択します。
- [インデックス]タブをクリックし、インデックス名を選択してから、次のいずれかを行います。
- インデックスをコピーするには、[コピー]をクリックします。
インデックス名の末尾に、増分数が付加されたインデックスがコピーされます。
- インデックスの名前を変更するには、[名前変更]をクリックし、新しい名前を入力したら[OK]をクリックします。
メモ
インデックスの名前は、64 文字までの英数字に制限されます。名前にはアンダースコア文字(_)を使用できますが、他の特殊文字やスペースは使用できません。名前の先頭を数字にすることはできません。
- インデックスを削除するには、[削除]をクリックし、もう一度[削除]をクリックします。
- インデックスをコピーするには、[コピー]をクリックします。
- 新しいインデックスを追加する場合は、[追加]をクリックします。
[インデックス]ダイアログ ボックスが表示され、通常の方法でインデックスを作成することができます。
- [OK]をクリックして[テーブル プロパティ]ダイアログ ボックスを終了します。