def METHOD_NAME(self, api_key):
    """Download an Airtable table as a DataFrame.
    Note that airtable records have rows structured as follows:
        [{"id", "fields": {colname: value, ...}, ...]
    This function applies renames in the following order.
        1. rename id
        2. rename fields
        3. apply column prefix (to columns not renamed by 1 or 2)
    """
    print(
        f"Downloading airtable data for {self.air_base_name}.{self.air_table_name}"
    )
    all_rows = Table(api_key, self.air_base_id, self.air_table_name).all()
    self.extract_time = pendulum.now()
    raw_df = pd.DataFrame(
        [
            {"id": row["id"], **make_arrays_bq_safe(row["fields"])}
            for row in all_rows
        ]
    )
    self.data = raw_df.rename(make_name_bq_safe, axis="columns")