@@ -333,6 +333,10 @@ def _build_filter_from_labels(labels):
333333 return filter_str
334334
335335
336+ def _build_dataset_encryption_config (kms_key ):
337+ return bigquery .EncryptionConfiguration (kmsKeyName = kms_key )
338+
339+
336340class BigQueryWrapper (object ):
337341 """BigQuery client wrapper with utilities for querying.
338342
@@ -835,7 +839,7 @@ def _create_table(
835839 num_retries = MAX_RETRIES ,
836840 retry_filter = retry .retry_on_server_errors_and_timeout_filter )
837841 def get_or_create_dataset (
838- self , project_id , dataset_id , location = None , labels = None ):
842+ self , project_id , dataset_id , location = None , labels = None , kms_key = None ):
839843 # Check if dataset already exists otherwise create it
840844 try :
841845 dataset = self .client .datasets .Get (
@@ -858,6 +862,9 @@ def get_or_create_dataset(
858862 dataset .location = location
859863 if labels is not None :
860864 dataset .labels = _build_dataset_labels (labels )
865+ if kms_key is not None :
866+ dataset .defaultEncryptionConfiguration = (
867+ _build_dataset_encryption_config (kms_key ))
861868 request = bigquery .BigqueryDatasetsInsertRequest (
862869 projectId = project_id , dataset = dataset )
863870 response = self .client .datasets .Insert (request )
@@ -929,9 +936,14 @@ def is_user_configured_dataset(self):
929936 @retry .with_exponential_backoff (
930937 num_retries = MAX_RETRIES ,
931938 retry_filter = retry .retry_on_server_errors_and_timeout_filter )
932- def create_temporary_dataset (self , project_id , location , labels = None ):
939+ def create_temporary_dataset (
940+ self , project_id , location , labels = None , kms_key = None ):
933941 self .get_or_create_dataset (
934- project_id , self .temp_dataset_id , location = location , labels = labels )
942+ project_id ,
943+ self .temp_dataset_id ,
944+ location = location ,
945+ labels = labels ,
946+ kms_key = kms_key )
935947
936948 if (project_id is not None and not self .is_user_configured_dataset () and
937949 not self .created_temp_dataset ):
0 commit comments