class_docstr: InputLoader that reads data in as a Spark DataFrame.
class_docstr_tok: ["InputLoader","that","reads","data","in","as","a","Spark","DataFrame","."]
docstr: Load the contents from an Iceberg table as a DataFrame.
  
  Args:
      iceberg_table_data_source (IcebergTableDataSource): An Iceberg Table source.
      event_time_feature_name (str): Event time feature's name of feature group.
      input_start_offset (str): Start offset that is used to calculate the input start date.
      input_end_offset (str): End offset that is used to calculate the input end date.
  
  Returns:
      DataFrame: Contents of the Iceberg Table as a Spark DataFrame.
docstr_tok: ["Load","the","contents","from","an","Iceberg","table","as","a","DataFrame",".","Args",":","iceberg_table_data_source","(","IcebergTableDataSource",")",":","An","Iceberg","Table","source",".","event_time_feature_name","(","str",")",":","Event","time","feature","'s","name","of","feature","group",".","input_start_offset","(","str",")",":","Start","offset","that","is","used","to","calculate","the","input","start","date",".","input_end_offset","(","str",")",":","End","offset","that","is","used","to","calculate","the","input","end","date",".","Returns",":","DataFrame",":","Contents","of","the","Iceberg","Table","as","a","Spark","DataFrame","."]
code: def load_from_iceberg_table(
      self,
      iceberg_table_data_source: IcebergTableDataSource,
      event_time_feature_name: str,
      input_start_offset: str,
      input_end_offset: str,
  ) -> DataFrame:
      """Load the contents from an Iceberg table as a DataFrame.
  
      Args:
          iceberg_table_data_source (IcebergTableDataSource): An Iceberg Table source.
          event_time_feature_name (str): Event time feature's name of feature group.
          input_start_offset (str): Start offset that is used to calculate the input start date.
          input_end_offset (str): End offset that is used to calculate the input end date.
  
      Returns:
          DataFrame: Contents of the Iceberg Table as a Spark DataFrame.
      """
      catalog = iceberg_table_data_source.catalog.lower()
      database = iceberg_table_data_source.database.lower()
      table = iceberg_table_data_source.table.lower()
      iceberg_table = f"{catalog}.{database}.{table}"
  
      spark_session = self.spark_session_factory.get_spark_session_with_iceberg_config(
          iceberg_table_data_source.warehouse_s3_uri, catalog
      )
  
      filter_condition = self._get_iceberg_offset_filter_condition(
          event_time_feature_name,
          input_start_offset,
          input_end_offset,
      )
  
      iceberg_df = spark_session.table(iceberg_table)
  
      if filter_condition:
          logger.info(
              "The filter condition for iceberg feature group is %s.",
              filter_condition,
          )
          iceberg_df = iceberg_df.filter(filter_condition)
  
      return iceberg_df
  
imports: from __future__ import absolute_import
  import logging
  import re
  from abc import ABC, abstractmethod
  from typing import Generic, Optional, TypeVar, Union
  import attr
  from pyspark.sql import DataFrame
  from sagemaker import Session
  from sagemaker.feature_store.feature_processor._constants import FEATURE_GROUP_ARN_REGEX_PATTERN
  from sagemaker.feature_store.feature_processor._data_source import CSVDataSource, FeatureGroupDataSource, ParquetDataSource, IcebergTableDataSource
  from sagemaker.feature_store.feature_processor._spark_factory import SparkSessionFactory
  from sagemaker.feature_store.feature_processor._input_offset_parser import InputOffsetParser
  from sagemaker.feature_store.feature_processor._env import EnvironmentHelper
label_desc: Use image node_id 4 for calling the SparkDataFrameInputLoader obj's underlying member method code with example usage: obj.load_from_iceberg_table(iceberg_table_data_source, event_time_feature_name, input_start_offset, input_end_offset) and returns: iceberg_df