def process_ip_data(self, ip_data, parent_key, child_key, table_name, indicator_value):
        """
        To extract and ingest the IP data into different tables in Log Analytics workspace.

        Args:
            ip_data (dict): A dictionary containing the ip address data.
            parent_key (str): The key of the parent data to extract.
            child_key (str): The key of the child data to extract.
            table_name (str): The name of the table.

        Returns:
            dict: A updated dictionary after extraction.

        Raises:
            TeamCymruScoutException: If an error occurs during the extracting or ingesting the IP data.
        """
        __method_name = inspect.currentframe().f_code.co_name
        try:
            applogger.debug(
                "{}(method={}) Extracting IP data from Details API for IP: {}.".format(
                    self.logs_starts_with, __method_name, indicator_value
                )
            )
            parent_data = ip_data.get(parent_key, {})
            if parent_data:
                child_data = parent_data.get(child_key, [])
                if child_data:
                    if "ip" not in child_data:
                        for item in child_data:
                            item["ip"] = ip_data.get("ip")
                            item["start_date"] = ip_data.get("start_date")
                            item["end_date"] = ip_data.get("end_date")
                    if table_name in ["PDNS", "Fingerprints", "Summary_Fingerprints"]:
                        for data in child_data:
                            if "type" in data:
                                data["{}_type".format(table_name[:-1].lower())] = data.pop("type")
                    self.rest_helper_obj.send_data_to_sentinel(
                        child_data,
                        "{}_{}".format(consts.IP_TABLE_NAME, table_name),
                        consts.AZURE_DATA_COLLECTION_RULE_ID_SUB_TABLES,
                        indicator_value=indicator_value,
                    )
                    parent_data.pop(child_key)
            return parent_data
        except Exception as err:
            applogger.error(self.error_logs.format(self.logs_starts_with, __method_name, err))
            raise TeamCymruScoutException()

        To extract and ingest the IP data into different tables in Log Analytics workspace.

        Args:
            ip_data (dict): A dictionary containing the ip address data.
            parent_key (str): The key of the parent data to extract.
            child_key (str): The key of the child data to extract.
            table_name (str): The name of the table.

        Returns:
            dict: A updated dictionary after extraction.

        Raises:
            TeamCymruScoutException: If an error occurs during the extracting or ingesting the IP data.
        
Solutions/Team Cymru Scout/Data Connectors/TeamCymruScout/IPDataCollector/ip_collector.py