code: def fetch(self, columns: Iterable[str]) -> pa.Table:
      from pyarrow.interchange import from_dataframe
  
      columns = list(columns)
      projected_schema = pa.schema(
          [f for f in self._schema if f.name in columns]
      )
      table = from_dataframe(
          self._dataframe.select_columns_by_name(columns)
      )
      return table.cast(projected_schema, safe=False)
  
file_path: vegafusion/python/vegafusion/vegafusion/datasource/dfi_datasource.py
imports: from typing import Iterable
  import re
  import pyarrow
  from typing import Any, Dict
  from ._dfi_types import DtypeKind, DataFrame
  from .datasource import Datasource
label_desc: Use image node_id 3 for calling the DfiDatasource obj's underlying member method code with example usage: obj.fetch(columns) and returns: table