<PackageReference Include="Azure.Storage.Blobs" Version="12.23.0" />

QuickQueryExtensions

static class QuickQueryExtensions
Quick Query extensions.
using Azure.Storage.Blobs.Models; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; namespace Azure.Storage.Blobs { internal static class QuickQueryExtensions { internal static QuerySerialization ToQuickQuerySerialization(this BlobQueryTextOptions textConfiguration, bool isInput) { if (textConfiguration == null) return null; BlobQueryCsvTextOptions blobQueryCsvTextOptions = textConfiguration as BlobQueryCsvTextOptions; QuerySerialization querySerialization; if (blobQueryCsvTextOptions != null) { querySerialization = new QuerySerialization(new QueryFormat(QueryFormatType.Delimited)); QueryFormat format = querySerialization.Format; DelimitedTextConfigurationInternal obj = new DelimitedTextConfigurationInternal { ColumnSeparator = blobQueryCsvTextOptions.ColumnSeparator?.ToString(CultureInfo.InvariantCulture) }; char? nullable = blobQueryCsvTextOptions.QuotationCharacter; object fieldQuote; char valueOrDefault; if (!nullable.HasValue) fieldQuote = null; else { valueOrDefault = nullable.GetValueOrDefault(); fieldQuote = valueOrDefault.ToString(CultureInfo.InvariantCulture); } obj.FieldQuote = (string)fieldQuote; obj.RecordSeparator = blobQueryCsvTextOptions.RecordSeparator?.ToString(CultureInfo.InvariantCulture); nullable = blobQueryCsvTextOptions.EscapeCharacter; object escapeChar; if (!nullable.HasValue) escapeChar = null; else { valueOrDefault = nullable.GetValueOrDefault(); escapeChar = valueOrDefault.ToString(CultureInfo.InvariantCulture); } obj.EscapeChar = (string)escapeChar; obj.HeadersPresent = blobQueryCsvTextOptions.HasHeaders; format.DelimitedTextConfiguration = obj; } else { BlobQueryJsonTextOptions blobQueryJsonTextOptions = textConfiguration as BlobQueryJsonTextOptions; if (blobQueryJsonTextOptions != null) { querySerialization = new QuerySerialization(new QueryFormat(QueryFormatType.Json)); querySerialization.Format.JsonTextConfiguration = new JsonTextConfigurationInternal { RecordSeparator = blobQueryJsonTextOptions.RecordSeparator?.ToString(CultureInfo.InvariantCulture) }; } else { BlobQueryArrowOptions blobQueryArrowOptions = textConfiguration as BlobQueryArrowOptions; if (blobQueryArrowOptions != null) { if (isInput) throw new ArgumentException("BlobQueryArrowOptions can only be used for output serialization."); querySerialization = new QuerySerialization(new QueryFormat(QueryFormatType.Arrow)); QueryFormat format2 = querySerialization.Format; IList<BlobQueryArrowField> schema = blobQueryArrowOptions.Schema; format2.ArrowConfiguration = new ArrowTextConfigurationInternal((schema != null) ? schema.Select(ToArrowFieldInternal).ToList() : null); } else { if (!(textConfiguration is BlobQueryParquetTextOptions)) throw new ArgumentException("Invalid options type. Valid options are BlobQueryCsvTextOptions, BlobQueryJsonTextOptions, BlobQueryArrowOptions, and BlobQueryParquetTextOptions"); if (!isInput) throw new ArgumentException("BlobQueryParquetTextOptions can only be used for input serialization."); querySerialization = new QuerySerialization(new QueryFormat(QueryFormatType.Parquet)); } } } return querySerialization; } internal static ArrowFieldInternal ToArrowFieldInternal(this BlobQueryArrowField blobQueryArrowField) { if (blobQueryArrowField == null) return null; return new ArrowFieldInternal(blobQueryArrowField.Type.ToArrowFiledInternalType()) { Name = blobQueryArrowField.Name, Precision = new int?(blobQueryArrowField.Precision), Scale = new int?(blobQueryArrowField.Scale) }; } internal static string ToArrowFiledInternalType(this BlobQueryArrowFieldType blobQueryArrowFieldType) { switch (blobQueryArrowFieldType) { case BlobQueryArrowFieldType.Bool: return "bool"; case BlobQueryArrowFieldType.Decimal: return "decimal"; case BlobQueryArrowFieldType.Double: return "double"; case BlobQueryArrowFieldType.Int64: return "int64"; case BlobQueryArrowFieldType.String: return "string"; case BlobQueryArrowFieldType.Timestamp: return "timestamp[ms]"; default: throw new ArgumentException(string.Format("Unknown {0}: {1}", "BlobQueryArrowFieldType", blobQueryArrowFieldType)); } } } }