def update(self, query_name, saved_query_attributes):
        """
        Given a dict of attributes to be updated, update only those attributes
        in the Saved Query at the resource given by 'query_name'. This will
        perform two HTTP requests--one to fetch the query definition, and one
        to set the new attributes. This method will intend to preserve any
        other properties on the query.

        Master key must be set.
        """

        query_name_attr_name = "query_name"
        refresh_rate_attr_name = "refresh_rate"
        query_attr_name = "query"
        metadata_attr_name = "metadata"

        old_saved_query = self.get(query_name)

        # Create a new query def to send back. We cannot send values for attributes like 'urls',
        # 'last_modified_date', 'run_information', etc.
        new_saved_query = {
            query_name_attr_name: old_saved_query[query_name_attr_name], # expected
            refresh_rate_attr_name: old_saved_query[refresh_rate_attr_name], # expected
            query_attr_name: {}
        }

        # If metadata was set, preserve it. The Explorer UI currently stores information here.
        old_metadata = (old_saved_query[metadata_attr_name]
                       if metadata_attr_name in old_saved_query
                       else None)

        if old_metadata:
            new_saved_query[metadata_attr_name] = old_metadata

        # Preserve any non-empty properties of the existing query. We get back values like None
        # for 'group_by', 'interval' or 'timezone', but those aren't accepted values when updating.
        old_query = old_saved_query[query_attr_name] # expected

        # Shallow copy since we want the entire object heirarchy to start with.
        for (key, value) in six.iteritems(old_query):
            if value:
                new_saved_query[query_attr_name][key] = value

        # Now, recursively overwrite any attributes passed in.
        SavedQueriesInterface._deep_update(new_saved_query, saved_query_attributes)

        return self.create(query_name, new_saved_query)