code: def _check_can_be_tiled(cls, op, is_window_int):
      inp = op.input
      axis = op.axis
  
      if axis == 0 and inp.ndim == 2:
          if has_unknown_shape(inp):
              yield
          inp = yield from recursive_tile(
              inp.rechunk({1: inp.shape[1]})
          )
  
      if is_window_int:
          # if window is integer
          if any(np.isnan(ns) for ns in inp.nsplits[op.axis]):
              yield
      else:
          # if window is offset
          # must be aware of index's meta including min and max
          for i in range(inp.chunk_shape[axis]):
              chunk_index = [0, 0]
              chunk_index[axis] = i
              chunk = inp.cix[tuple(chunk_index)]
  
              if axis == 0:
                  index_value = chunk.index_value
              else:
                  index_value = chunk.columns_value
              if pd.isnull(index_value.min_val) or pd.isnull(
                  index_value.max_val
              ):
                  yield
  
      return inp
  
imports: import numpy
  import pandas
  from ....None import opcodes
  from ....core import recursive_tile
  from ....serialization.serializables import FieldTypes, AnyField, Int64Field, BoolField, StringField, Int32Field, KeyField, TupleField, DictField, ListField
  from ....utils import lazy_import, has_unknown_shape, pd_release_version, calc_nsplits
  from ...operands import DataFrameOperand, DataFrameOperandMixin
  from ...core import DATAFRAME_TYPE
  from ...utils import build_empty_df, build_empty_series, parse_index
label_desc: Use image node_id 17 for calling the DataFrameRollingAgg obj's underlying member method code with example usage: obj._check_can_be_tiled(cls, op, is_window_int) and returns: inp