@@ -276,7 +276,7 @@ def _insert_job(self, body_object):
276276 body = body_object
277277 ).execute ()
278278
279- def query (self , query , max_results = None , timeout = 0 , dry_run = False , use_legacy_sql = None ):
279+ def query (self , query , max_results = None , timeout = 0 , dry_run = False , use_legacy_sql = None , external_udf_uris = None ):
280280 """Submit a query to BigQuery.
281281
282282 Parameters
@@ -294,6 +294,9 @@ def query(self, query, max_results=None, timeout=0, dry_run=False, use_legacy_sq
294294 message it would if it wasn't a dry run.
295295 use_legacy_sql : bool, optional. Default True.
296296 If False, the query will use BigQuery's standard SQL (https://cloud.google.com/bigquery/sql-reference/)
297+ external_udf_uris : list, optional
298+ Contains external UDF URIs. If given, URIs must be Google Cloud
299+ Storage and have .js extensions.
297300
298301
299302 Returns
@@ -321,6 +324,10 @@ def query(self, query, max_results=None, timeout=0, dry_run=False, use_legacy_sq
321324 if use_legacy_sql is not None :
322325 query_data ['useLegacySql' ] = use_legacy_sql
323326
327+ if external_udf_uris :
328+ query_data ['userDefinedFunctionResources' ] = \
329+ [ {'resourceUri' : u } for u in external_udf_uris ]
330+
324331 return self ._submit_query_job (query_data )
325332
326333 def get_query_schema (self , job_id ):
@@ -1048,7 +1055,7 @@ def write_to_table(
10481055 query ,
10491056 dataset = None ,
10501057 table = None ,
1051- external_udf_uris = [] ,
1058+ external_udf_uris = None ,
10521059 allow_large_results = None ,
10531060 use_query_cache = None ,
10541061 priority = None ,
@@ -1073,7 +1080,7 @@ def write_to_table(
10731080 table : str, optional
10741081 String id of the table
10751082 external_udf_uris : list, optional
1076- Contains extternal UDF URIs. If given, URIs must be Google Cloud
1083+ Contains external UDF URIs. If given, URIs must be Google Cloud
10771084 Storage and have .js extensions.
10781085 allow_large_results : bool, optional
10791086 Whether or not to allow large results
@@ -1144,13 +1151,9 @@ def write_to_table(
11441151 if write_disposition :
11451152 configuration ['writeDisposition' ] = write_disposition
11461153
1147- configuration ['userDefinedFunctionResources' ] = []
1148- for external_udf_uri in external_udf_uris :
1149- configuration ['userDefinedFunctionResources' ].append (
1150- {
1151- "resourceUri" : external_udf_uri
1152- }
1153- )
1154+ if external_udf_uris :
1155+ configuration ['userDefinedFunctionResources' ] = \
1156+ [ {'resourceUri' : u } for u in external_udf_uris ]
11541157
11551158 body = {
11561159 "configuration" : {
0 commit comments