':param sql: The SQL to execute on the MySQL table.
:type sql: string
:param bucket: The bucket to upload to.
:type bucket: string
:param filename: The filename to use as the object name when uploading
to Google cloud storage. A {} should be specified in the filename
to allow the operator to inject file numbers in cases where the
file is split due to size.
:type filename: string
:param schema_filename: If set, the filename to use as the object name
when uploading a .json file containing the BigQuery schema fields
for the table that was dumped from MySQL.
:type schema_filename: string
:param approx_max_file_size_bytes: This operator supports the ability
to split large table dumps into multiple files (see notes in the
filenamed param docs above). Google cloud storage allows for files
to be a maximum of 4GB. This param allows developers to specify the
file size of the splits.
:type approx_max_file_size_bytes: long
:param mysql_conn_id: Reference to a specific MySQL hook.
:type mysql_conn_id: string
:param google_cloud_storage_conn_id: Reference to a specific Google
cloud storage hook.
:type google_cloud_storage_conn_id: string
:param delegate_to: The account to impersonate, if any. For this to
work, the service account making the request must have domain-wide
delegation enabled.'

@apply_defaults
def __init__(self, sql, bucket, filename, schema_filename=None, approx_max_file_size_bytes=1900000000, mysql_conn_id='mysql_default', google_cloud_storage_conn_id='google_cloud_storage_default', delegate_to=None, *args, **kwargs):

    super(MySqlToGoogleCloudStorageOperator, self).__init__(*args, **kwargs)
    self.sql = sql
    self.bucket = bucket
    self.filename = filename
    self.schema_filename = schema_filename
    self.approx_max_file_size_bytes = approx_max_file_size_bytes
    self.mysql_conn_id = mysql_conn_id
    self.google_cloud_storage_conn_id = google_cloud_storage_conn_id
    self.delegate_to = delegate_to
