API call:  create a table via a PUT request

        See
        https://cloud.google.com/bigquery/docs/reference/rest/v2/tables/insert

        Args:
            table (Union[ \
                :class:`~google.cloud.bigquery.table.Table`, \
                :class:`~google.cloud.bigquery.table.TableReference`, \
                str, \
            ]):
                A :class:`~google.cloud.bigquery.table.Table` to create.
                If ``table`` is a reference, an empty table is created
                with the specified ID. The dataset that the table belongs to
                must already exist.
            exists_ok (bool):
                Defaults to ``False``. If ``True``, ignore "already exists"
                errors when creating the table.
            retry (google.api_core.retry.Retry):
                Optional. How to retry the RPC.

        Returns:
            google.cloud.bigquery.table.Table:
                A new ``Table`` returned from the service.

def create_table(self, table, exists_ok=False, retry=DEFAULT_RETRY):
        """API call:  create a table via a PUT request

        See
        https://cloud.google.com/bigquery/docs/reference/rest/v2/tables/insert

        Args:
            table (Union[ \
                :class:`~google.cloud.bigquery.table.Table`, \
                :class:`~google.cloud.bigquery.table.TableReference`, \
                str, \
            ]):
                A :class:`~google.cloud.bigquery.table.Table` to create.
                If ``table`` is a reference, an empty table is created
                with the specified ID. The dataset that the table belongs to
                must already exist.
            exists_ok (bool):
                Defaults to ``False``. If ``True``, ignore "already exists"
                errors when creating the table.
            retry (google.api_core.retry.Retry):
                Optional. How to retry the RPC.

        Returns:
            google.cloud.bigquery.table.Table:
                A new ``Table`` returned from the service.
        """
        table = _table_arg_to_table(table, default_project=self.project)

        path = "/projects/%s/datasets/%s/tables" % (table.project, table.dataset_id)
        data = table.to_api_repr()
        try:
            api_response = self._call_api(retry, method="POST", path=path, data=data)
            return Table.from_api_repr(api_response)
        except google.api_core.exceptions.Conflict:
            if not exists_ok:
                raise
            return self.get_table(table.reference, retry=retry)