**Apache Airflow version**: 1.10.*
**BackPort Packages version**: 2020.10.5rc1

**What happened**:

`BigQueryInsertJobOperator` tries to start a BigQuery job by specifying a job_id which is a combination of `dag_id`, `task_id`, `execution_date` and an additional `uniqueness_suffix`.

https://github.com/apache/airflow/blob/master/airflow/providers/google/cloud/operators/bigquery.py#L2072

However, because BigQuery only accepts alphanumeric (in additon to dashes and underscore) characters then, if a DagID contains a version number whcih includes a `.` character then this will cause the task to fail.

https://cloud.google.com/bigquery/docs/running-jobs#generate-jobid

**How to reproduce it**:
Create a DAG with the name `my-dag-v1.0`.
airflow/providers/google/cloud/hooks/bigquery.py
self, dataset_id: str, table_resource: Dict[str, Any], project_id: Optional[str] = None
    ) -> Dict[str, Any]:
        """
        If the table already exists, update the existing table if not create new.
        Since BigQuery does not natively allow table upserts, this is not an
        atomic operation.
        :param dataset_id: the dataset to upsert the table into.
        :type dataset_id: str
        :param table_resource: a table resource. see
            https://cloud.google.com/bigquery/docs/reference/v2/tables#resource
        :type table_resource: dict
        :param project_id: the project to upsert the table into.  If None,
            project will be self.project_id.
        :return:
        """
        table_id = table_resource['tableReference']['tableId']
        table_resource = self._resolve_table_reference(
            table_resource=table_resource, project_id=project_id, dataset_id=dataset_id, table_id=table_id
        )
        tables_list_resp = self.get_dataset_tables(dataset_id=dataset_id, project_id=project_id)
        if any(table['tableId'] == table_id for table in tables_list_resp):
            self.log.info('Table %s:%s.%s exists, updating.', project_id, dataset_id, table_id)
            table = self.update_table(table_resource=table_resource)
        else:
            self.log.info('Table %s:%s.%s does not exist. creating.', project_id, dataset_id, table_id)
            table = self.create_empty_table(
                table_resource=table_resource, project_id=project_id
            ).to_api_repr()
        return table
    def run_table_delete(self, deletion_dataset_table: str, ignore_if_missing: bool = False) -> None: