[**@lancedb/lancedb**](../README.md) • **Docs** *** [@lancedb/lancedb](../globals.md) / PermutationBuilder # Class: PermutationBuilder A PermutationBuilder for creating data permutations with splits, shuffling, and filtering. This class provides a TypeScript wrapper around the native Rust PermutationBuilder, offering methods to configure data splits, shuffling, and filtering before executing the permutation to create a new table. ## Methods ### execute() ```ts execute(): Promise ``` Execute the permutation and create the destination table. #### Returns `Promise`<[`Table`](Table.md)> A Promise that resolves to the new Table instance #### Example ```ts const permutationTable = await builder.execute(); console.log(`Created table: ${permutationTable.name}`); ``` *** ### filter() ```ts filter(filter): PermutationBuilder ``` Configure filtering for the permutation. #### Parameters * **filter**: `string` SQL filter expression #### Returns [`PermutationBuilder`](PermutationBuilder.md) A new PermutationBuilder instance #### Example ```ts builder.filter("age > 18 AND status = 'active'"); ``` *** ### persist() ```ts persist(connection, tableName): PermutationBuilder ``` Configure the permutation to be persisted. #### Parameters * **connection**: [`Connection`](Connection.md) The connection to persist the permutation to * **tableName**: `string` The name of the table to create #### Returns [`PermutationBuilder`](PermutationBuilder.md) A new PermutationBuilder instance #### Example ```ts builder.persist(connection, "permutation_table"); ``` *** ### shuffle() ```ts shuffle(options): PermutationBuilder ``` Configure shuffling for the permutation. #### Parameters * **options**: [`ShuffleOptions`](../interfaces/ShuffleOptions.md) Configuration for shuffling #### Returns [`PermutationBuilder`](PermutationBuilder.md) A new PermutationBuilder instance #### Example ```ts // Basic shuffle builder.shuffle({ seed: 42 }); // Shuffle with clump size builder.shuffle({ seed: 42, clumpSize: 10 }); ``` *** ### splitCalculated() ```ts splitCalculated(options): PermutationBuilder ``` Configure calculated splits for the permutation. #### Parameters * **options**: [`SplitCalculatedOptions`](../interfaces/SplitCalculatedOptions.md) Configuration for calculated splitting #### Returns [`PermutationBuilder`](PermutationBuilder.md) A new PermutationBuilder instance #### Example ```ts builder.splitCalculated({ calculation: "user_id % 3" }); ``` *** ### splitHash() ```ts splitHash(options): PermutationBuilder ``` Configure hash-based splits for the permutation. #### Parameters * **options**: [`SplitHashOptions`](../interfaces/SplitHashOptions.md) Configuration for hash-based splitting #### Returns [`PermutationBuilder`](PermutationBuilder.md) A new PermutationBuilder instance #### Example ```ts builder.splitHash({ columns: ["user_id"], splitWeights: [70, 30], discardWeight: 0 }); ``` *** ### splitRandom() ```ts splitRandom(options): PermutationBuilder ``` Configure random splits for the permutation. #### Parameters * **options**: [`SplitRandomOptions`](../interfaces/SplitRandomOptions.md) Configuration for random splitting #### Returns [`PermutationBuilder`](PermutationBuilder.md) A new PermutationBuilder instance #### Example ```ts // Split by ratios builder.splitRandom({ ratios: [0.7, 0.3], seed: 42 }); // Split by counts builder.splitRandom({ counts: [1000, 500], seed: 42 }); // Split with fixed size builder.splitRandom({ fixed: 100, seed: 42 }); ``` *** ### splitSequential() ```ts splitSequential(options): PermutationBuilder ``` Configure sequential splits for the permutation. #### Parameters * **options**: [`SplitSequentialOptions`](../interfaces/SplitSequentialOptions.md) Configuration for sequential splitting #### Returns [`PermutationBuilder`](PermutationBuilder.md) A new PermutationBuilder instance #### Example ```ts // Split by ratios builder.splitSequential({ ratios: [0.8, 0.2] }); // Split by counts builder.splitSequential({ counts: [800, 200] }); // Split with fixed size builder.splitSequential({ fixed: 1000 }); ```