docstr: Sampling by rolling for machine learning/deep learning models.
  
  :param lookback: int, lookback value.
  :param horizon: int or list,
         if `horizon` is an int, we will sample `horizon` step
         continuously after the forecasting point.
         if `horizon` is a list, we will sample discretely according
         to the input list.
         specially, when `horizon` is set to 0, ground truth will be generated as None.
  :param feature_col: str or list, indicates the feature col name. Default to None,
         where we will take all available feature in rolling.
  :param target_col: str or list, indicates the target col name. Default to None,
         where we will take all target in rolling. it should be a subset of target_col
         you used to initialize the xshardtsdataset.
  :param id_sensitive: bool,
         |if `id_sensitive` is False, we will rolling on each id's sub dataframe
         |and fuse the sampings.
         |The shape of rolling will be
         |x: (num_sample, lookback, num_feature_col + num_target_col)
         |y: (num_sample, horizon, num_target_col)
         |where num_sample is the summation of sample number of each dataframe
         |if `id_sensitive` is True, we have not implement this currently.
  
  :return: the xshardtsdataset instance.
code: def roll(
      self,
      lookback,
      horizon,
      feature_col=None,
      target_col=None,
      id_sensitive=False,
  ):
      """
      Sampling by rolling for machine learning/deep learning models.
  
      :param lookback: int, lookback value.
      :param horizon: int or list,
             if `horizon` is an int, we will sample `horizon` step
             continuously after the forecasting point.
             if `horizon` is a list, we will sample discretely according
             to the input list.
             specially, when `horizon` is set to 0, ground truth will be generated as None.
      :param feature_col: str or list, indicates the feature col name. Default to None,
             where we will take all available feature in rolling.
      :param target_col: str or list, indicates the target col name. Default to None,
             where we will take all target in rolling. it should be a subset of target_col
             you used to initialize the xshardtsdataset.
      :param id_sensitive: bool,
             |if `id_sensitive` is False, we will rolling on each id's sub dataframe
             |and fuse the sampings.
             |The shape of rolling will be
             |x: (num_sample, lookback, num_feature_col + num_target_col)
             |y: (num_sample, horizon, num_target_col)
             |where num_sample is the summation of sample number of each dataframe
             |if `id_sensitive` is True, we have not implement this currently.
  
      :return: the xshardtsdataset instance.
      """
      if id_sensitive:
          raise NotImplementedError(
              "id_sensitive option has not been implemented."
          )
      feature_col = (
          _to_list(feature_col, "feature_col")
          if feature_col is not None
          else self.feature_col
      )
      target_col = (
          _to_list(target_col, "target_col")
          if target_col is not None
          else self.target_col
      )
      self.numpy_shards = self.shards.transform_shard(
          roll_timeseries_dataframe,
          None,
          lookback,
          horizon,
          feature_col,
          target_col,
      )
      return self
  
file_path: analytics-zoo/pyzoo/zoo/chronos/data/experimental/xshards_tsdataset.py
imports: from zoo.orca.data.shard import SparkXShards
  from zoo.chronos.data.utils.utils import _to_list, _check_type
  from zoo.chronos.data.utils.roll import roll_timeseries_dataframe
  from zoo.chronos.data.utils.split import split_timeseries_dataframe
  from zoo.chronos.data.experimental.utils import add_row, transform_to_dict
label_desc: Use image node_id 3 for calling the XShardsTSDataset obj's underlying member method code with example usage: obj.roll(lookback, horizon, feature_col, target_col, id_sensitive) and returns: self