public void ModifyRequest()
        {
            var options = new UploadAvroOptions
            {
                AllowUnknownFields = true,
                CreateDisposition  = CreateDisposition.CreateIfNeeded,
                MaxBadRecords      = 10,
                TimePartitioning   = TimePartition.CreateDailyPartitioning(expiration: null),
                WriteDisposition   = WriteDisposition.WriteAppend,
                DestinationEncryptionConfiguration = new EncryptionConfiguration {
                    KmsKeyName = "projects/1/locations/us/keyRings/1/cryptoKeys/1"
                },
                DestinationSchemaUpdateOptions = SchemaUpdateOption.AllowFieldAddition | SchemaUpdateOption.AllowFieldRelaxation
            };

            JobConfigurationLoad config = new JobConfigurationLoad();

            options.ModifyConfiguration(config);
            Assert.Equal(true, config.IgnoreUnknownValues);
            Assert.Equal("CREATE_IF_NEEDED", config.CreateDisposition);
            Assert.Equal(10, config.MaxBadRecords);
            Assert.Equal("WRITE_APPEND", config.WriteDisposition);
            Assert.Equal("DAY", config.TimePartitioning.Type);
            Assert.Null(config.TimePartitioning.ExpirationMs);
            Assert.Equal("projects/1/locations/us/keyRings/1/cryptoKeys/1", config.DestinationEncryptionConfiguration.KmsKeyName);
            Assert.Equal(2, config.SchemaUpdateOptions.Count);
            Assert.Contains("ALLOW_FIELD_ADDITION", config.SchemaUpdateOptions);
            Assert.Contains("ALLOW_FIELD_RELAXATION", config.SchemaUpdateOptions);
        }
        protected override void ProcessRecord()
        {
            Project = InputObject.ProjectId;
            try
            {
                using (Stream fileInput = File.OpenRead(Filename))
                {
                    BigQueryJob bqj;

                    switch (Type)
                    {
                    case DataFormats.AVRO:
                        UploadAvroOptions AvroOptions = new UploadAvroOptions();
                        AvroOptions.WriteDisposition   = WriteMode;
                        AvroOptions.AllowUnknownFields = AllowUnknownFields;
                        bqj = Client.UploadAvro(InputObject, null, fileInput, AvroOptions);
                        break;

                    case DataFormats.JSON:
                        UploadJsonOptions JsonOptions = new UploadJsonOptions();
                        JsonOptions.WriteDisposition   = WriteMode;
                        JsonOptions.AllowUnknownFields = AllowUnknownFields;
                        bqj = Client.UploadJson(InputObject, null, fileInput, JsonOptions);
                        break;

                    case DataFormats.CSV:
                        UploadCsvOptions CsvOptions = new UploadCsvOptions();
                        CsvOptions.WriteDisposition     = WriteMode;
                        CsvOptions.AllowJaggedRows      = AllowJaggedRows;
                        CsvOptions.AllowQuotedNewlines  = AllowQuotedNewlines;
                        CsvOptions.AllowTrailingColumns = AllowUnknownFields;
                        CsvOptions.FieldDelimiter       = FieldDelimiter;
                        CsvOptions.Quote           = Quote;
                        CsvOptions.SkipLeadingRows = SkipLeadingRows;
                        bqj = Client.UploadCsv(InputObject, null, fileInput, CsvOptions);
                        break;

                    default:
                        throw UnknownParameterSetException;
                    }

                    bqj.PollUntilCompleted().ThrowOnAnyError();
                }
            }
            catch (IOException ex)
            {
                ThrowTerminatingError(new ErrorRecord(ex,
                                                      $"Error while reading file '{Filename}'.",
                                                      ErrorCategory.ReadError, Filename));
                return;
            }
            catch (Exception ex)
            {
                ThrowTerminatingError(new ErrorRecord(ex,
                                                      $"Error while uploading file '{Filename}' to table '{InputObject.TableId}'.",
                                                      ErrorCategory.WriteError, Filename));
            }
        }
        public void ModifyRequest()
        {
            var options = new UploadAvroOptions
            {
                AllowUnknownFields = true,
                CreateDisposition  = CreateDisposition.CreateIfNeeded,
                MaxBadRecords      = 10,
                WriteDisposition   = WriteDisposition.WriteAppend
            };

            JobConfigurationLoad config = new JobConfigurationLoad();

            options.ModifyConfiguration(config);
            Assert.Equal(true, config.IgnoreUnknownValues);
            Assert.Equal("CREATE_IF_NEEDED", config.CreateDisposition);
            Assert.Equal(10, config.MaxBadRecords);
            Assert.Equal("WRITE_APPEND", config.WriteDisposition);
        }