Trabalhar com ficheiros CSV e JSON para soluções de dadosWorking with CSV and JSON files for data solutions

CSV e JSON provavelmente são os formatos mais comuns utilizados para ingerir, troca e armazenar dados não estruturados ou semiestruturados.CSV and JSON are likely the most common formats used for ingesting, exchanging, and storing unstructured or semi-structured data.

Sobre o formato CSVAbout CSV format

Ficheiros CSV (valores separados por vírgulas) são utilizados frequentemente para trocar dados entre sistemas em texto sem formatação de tabela.CSV (comma-separated values) files are commonly used to exchange tabular data between systems in plain text. Eles normalmente contêm uma linha de cabeçalho que fornece os nomes das colunas para os dados, mas, caso contrário, são considerados semiestruturados.They typically contain a header row that provides column names for the data, but are otherwise considered semi-structured. Isso é que CSVs naturalmente não é possível representar dados hierárquicos ou relacionais.This is due to the fact that CSVs cannot naturally represent hierarchical or relational data. Relações de dados normalmente são processadas com vários ficheiros CSV, onde chaves externas são armazenadas nas colunas de um ou mais ficheiros, mas as relações entre esses arquivos não são expressos pelo formato em si.Data relationships are typically handled with multiple CSV files, where foreign keys are stored in columns of one or more files, but the relationships between those files are not expressed by the format itself. Arquivos no formato CSV, podem utilizar outros delimitadores além de vírgulas, como marcas ou espaços.Files in CSV format may use other delimiters besides commas, such as tabs or spaces.

Apesar das suas limitações, ficheiros CSV são uma escolha popular para troca de dados, uma vez que são suportados por uma vasta gama de empresas, consumidores e aplicativos científicos.Despite their limitations, CSV files are a popular choice for data exchange, because they are supported by a wide range of business, consumer, and scientific applications. Por exemplo, os programas de base de dados e a folha de cálculo podem importar e exportar ficheiros CSV.For example, database and spreadsheet programs can import and export CSV files. Da mesma forma, a maioria dos batch e o fluxo de dados de motores de processamento, como o Spark e Hadoop, nativamente suportam serializando e desserializando arquivos no formato CSV e oferecem formas de aplicar um esquema na leitura.Similarly, most batch and stream data processing engines, such as Spark and Hadoop, natively support serializing and deserializing CSV-formatted files and offer ways to apply a schema on read. Isto torna mais fácil trabalhar com os dados, oferecendo opções para consultar em relação a ele e armazenar as informações num formato de dados mais eficiente para processamento mais rápido.This makes it easier to work with the data, by offering options to query against it and store the information in a more efficient data format for faster processing.

Sobre o formato JSONAbout JSON format

Dados JSON (JavaScript Object Notation) são representados como pares chave-valor num formato semiestruturado.JSON (JavaScript Object Notation) data is represented as key-value pairs in a semi-structured format. JSON é, muitas vezes, em comparação com XML, pois ambos são capazes de armazenar dados em formato hierárquico, com dados representados de subordinados inline com o respetivo principal.JSON is often compared to XML, as both are capable of storing data in hierarchical format, with child data represented inline with its parent. Ambos são autodescritivos e humanos legível, mas documentos JSON tendem a ser muito menor, que leva a sua utilização popular na troca de dados online, especialmente com o advento dos serviços web baseados em REST.Both are self-describing and human readable, but JSON documents tend to be much smaller, leading to their popular use in online data exchange, especially with the advent of REST-based web services.

Arquivos no formato JSON tem várias vantagens sobre CSV:JSON-formatted files have several benefits over CSV:

  • JSON mantém estruturas hierárquicas, facilitando a conter os dados relacionados num único documento e representam as relações complexas.JSON maintains hierarchical structures, making it easier to hold related data in a single document and represent complex relationships.
  • A maioria das linguagens de programação fornecem suporte nativo para anular a serialização do JSON em objetos ou fornecem bibliotecas de serialização JSON simples.Most programming languages provide native support for deserializing JSON into objects, or provide lightweight JSON serialization libraries.
  • JSON suporta listas de objetos, ajudando a evitar confusas traduções de listas para um modelo de dados relacional.JSON supports lists of objects, helping to avoid messy translations of lists into a relational data model.
  • JSON é um formato de arquivo usadas para bases de dados NoSQL, como o MongoDB, Couchbase e Azure Cosmos DB.JSON is a commonly used file format for NoSQL databases, such as MongoDB, Couchbase, and Azure Cosmos DB.

Uma vez que uma grande quantidade de dados chegando pela conexão já está no formato JSON, a maioria das linguagens de programação baseada na web suportam trabalhando com JSON nativamente, ou através da utilização de bibliotecas externas para serializar e desserializar dados JSON.Since a lot of data coming across the wire is already in JSON format, most web-based programming languages support working with JSON natively, or through the use of external libraries to serialize and deserialize JSON data. Esse suporte universal para JSON tem levado ao seu uso em formatos lógicos por meio de representação de estrutura de dados, formatos de troca de dados de acesso frequente e o armazenamento de dados para dados amovíveis.This universal support for JSON has led to its use in logical formats through data structure representation, exchange formats for hot data, and data storage for cold data.

Muitos motores de processamento de dados de batch e o stream suportam nativamente o JSON de serialização e desserialização.Many batch and stream data processing engines natively support JSON serialization and deserialization. Embora os dados contidos em documentos JSON, por fim, podem ser armazenados em formatos mais com otimização de desempenho, como o Parquet ou Avro, funciona como os dados não processados para a origem de verdade, o que é fundamental para o reprocessamento os dados conforme necessário.Though the data contained within JSON documents may ultimately be stored in a more performance-optimized formats, such as Parquet or Avro, it serves as the raw data for source of truth, which is critical for reprocessing the data as needed.

Quando usar os formatos JSON ou CSVWhen to use CSV or JSON formats

CSVs são mais frequentemente utilizados para exportar e importar os dados ou ao processá-lo para análise e machine learning.CSVs are more commonly used for exporting and importing data, or processing it for analytics and machine learning. Arquivos no formato JSON têm os mesmos benefícios, mas são mais comuns em soluções de dados do exchange.JSON-formatted files have the same benefits, but are more common in hot data exchange solutions. Documentos JSON são, muitas vezes, enviados pela web e dispositivos móveis, efetuar transações online, por dispositivos IoT (internet das coisas) para unidirecionais ou comunicação bidirecional, ou por aplicações cliente comunicar com serviços de PaaS e SaaS ou sem servidor arquiteturas.JSON documents are often sent by web and mobile devices performing online transactions, by IoT (internet of things) devices for one-way or bidirectional communication, or by client applications communicating with SaaS and PaaS services or serverless architectures.

Formatos de ficheiro CSV e JSON, que ambos facilitam a trocam de dados entre sistemas diferentes ou dispositivos.CSV and JSON file formats both make it easy to exchange data between dissimilar systems or devices. Os formatos semiestruturados permitem flexibilidade na transferência de quase qualquer tipo de dados e suporte universal para esses formatos torná-los simples para trabalhar com.Their semi-structured formats allow flexibility in transferring almost any type of data, and universal support for these formats make them simple to work with. Podem ser utilizados como a origem não processada de verdade em casos onde os dados processados são armazenados em formatos binários para consultar mais eficiente.Both can be used as the raw source of truth in cases where the processed data is stored in binary formats for more efficient querying.

Trabalhar com dados CSV e JSON no AzureWorking with CSV and JSON data in Azure

O Azure fornece várias soluções para trabalhar com ficheiros CSV e JSON, consoante as suas necessidades.Azure provides several solutions for working with CSV and JSON files, depending on your needs. O local de destino principal para esses arquivos é o armazenamento do Azure ou do Azure Data Lake Store.The primary landing place for these files is either Azure Storage or Azure Data Lake Store. Azure maioria dos serviços que funcionam com estes e outros arquivos baseados em texto integram com um dos serviços de armazenamento de objeto.Most Azure services that work with these and other text-based files integrate with either object storage service. Em algumas situações, no entanto, pode optar por importar diretamente os dados para o SQL do Azure ou noutro arquivo de dados.In some situations, however, you may opt to directly import the data into Azure SQL or some other data store. O SQL Server tem suporte nativo para armazenar e trabalhar com documentos JSON, que torna mais fácil importar e processar esses tipos de arquivos.SQL Server has native support for storing and working with JSON documents, which makes it easy to import and process those types of files. Pode usar um utilitário como SQL em massa importar para facilmente importar ficheiros CSV.You can use a utility like SQL Bulk Import to easily import CSV files.

Também pode consultar ficheiros JSON diretamente a partir do armazenamento de Blobs do Azure sem importar para o SQL do Azure.You can also query JSON files directly from Azure Blob Storage without importing them into Azure SQL. Para obter um exemplo completo dessa abordagem, consulte trabalhar com ficheiros JSON com o Azure SQL.For a complete example of this approach, see Work with JSON files with Azure SQL. Atualmente esta opção não está disponível para ficheiros CSV.Currently this option isn't available for CSV files.

Dependendo do cenário, pode realizar processamento em lotes ou processamento em tempo real dos dados.Depending on the scenario, you may perform batch processing or real-time processing of the data.

DesafiosChallenges

Existem alguns desafios para considerar ao trabalhar com esses formatos:There are some challenges to consider when working with these formats:

  • Sem quaisquer restrições no modelo de dados, ficheiros CSV e JSON são suscetíveis a Corrupção de dados ("lixo no, lixo out").Without any restraints on the data model, CSV and JSON files are prone to data corruption ("garbage in, garbage out"). Por exemplo, não há noção de um objeto de data/hora em qualquer um dos ficheiros, para que o formato de ficheiro não impede que inserir "ABC123" num campo de data, por exemplo.For instance, there's no notion of a date/time object in either file, so the file format does not prevent you from inserting "ABC123" in a date field, for example.

  • Utilizar ficheiros CSV e JSON como a sua solução de armazenamento amovível não são bem dimensionados quando trabalhar com grandes volumes de dados.Using CSV and JSON files as your cold storage solution does not scale well when working with big data. Na maioria dos casos, eles não podem ser divididos em partições para processamento paralelo e não podem ser comprimidos, bem como binários formatos.In most cases, they cannot be split into partitions for parallel processing, and cannot be compressed as well as binary formats. Muitas vezes, isso leva a processar e armazenar dados em formatos de leitura otimizada, como o Parquet e ORC (otimizada linha em colunas), que também fornecem índices e estatísticas de inline sobre os dados contidos.This often leads to processing and storing this data into read-optimized formats such as Parquet and ORC (optimized row columnar), which also provide indexes and inline statistics about the data contained.

  • Terá de aplicar um esquema de dados semi-estruturados para torná-lo mais fácil de consultar e analisar.You may need to apply a schema on the semi-structured data to make it easier to query and analyze. Normalmente, isso requer o armazenamento de dados no outro formulário que está em conformidade com as necessidades de armazenamento de dados do seu ambiente, por exemplo, numa base de dados.Typically, this requires storing the data in another form that complies with your environment's data storage needs, such as within a database.