def METHOD_NAME(self):
    data_files = PartitionedDataFiles(**self.setup_conf.dataset_parts)
    if self.setup_conf.split_by == 'hash_id':
        splitter = ListSplitter(
            data_files.hash_parts,
            valid_size=self.setup_conf.valid_size,
            seed=self.setup_conf.valid_split_seed,
        )
        logger.info(f'Prepared splits: '
                    f'{len(data_files.dt_parts)} parts in dt_train, {len(data_files.dt_parts)} parts in dt_valid, '
                    f'{len(splitter.train)} parts in hash_train, {len(splitter.valid)} parts in hash_valid')
        self.train_dataset = PartitionedDataset(
            data_files.data_path, data_files.dt_parts, splitter.train, col_id=self.col_id,
            post_processing=IterableChain(*self.build_iterable_processing('train')),
            shuffle_files=True if self._type == 'iterable' else False,
        )
        self.valid_dataset = PartitionedDataset(
            data_files.data_path, data_files.dt_parts, splitter.valid, col_id=self.col_id,
            post_processing=IterableChain(*self.build_iterable_processing('valid')),
            shuffle_files=False,
        )
    elif self.setup_conf.split_by == 'rows':
        raise NotImplementedError("Split by rows aren't supported for partitioned dataset")
    else:
        raise AttributeError(f'Unknown split strategy: {self.setup_conf.split_by}')