Как напечатать каждое поле json первого уровня в отдельной строке в jq?

Утилита jq не обеспечивает такого уровня контроля над красивой печатью. Самый простой хак, который вы, вероятно, могли бы сделать с jq , — это вывести части структуры serialized:

 $ jq '.coordinates[][] |= map(@json)' file
{
  "тип": "Мультиполигон",
  "координаты": [
    [
      [
        "[-94.9065,38.9884]",
        "[-94.8682,39.0596]",
        "[-94.6053,39.0432]",
        "[-94.6108,38.846]",
        "[-94.6108,38.7365]",
        "[-94.9668,38.7365]",
        "[-95.0544,38.7365]",
        "[-95.0544,38.9829]"
      ]
    ]
  ]
}
 

Это заменяет массивы в массиве .coordinates[][] строками в кодировке JSON, представляющими сериализованные массивы. Это больше не будет использоваться для обработки без предварительной передачи сериализованных массивов через fromjson в jq . Однако, если выходные данные предназначены только для визуализации, это может быть достаточно хорошим решением.

Применение сериализации на один уровень выше:

 $ jq '.coordinates[] |= map(@json)' файл
{
  "тип": "Мультиполигон",
  "координаты": [
    [
      "[[-94.9065,38.9884],[-94.8682,39.0596],[-94.6053,39.0432],[-94.6108,38.846],[-94.6108,38.7365],[-94.9668,38.7365],[-95.0544,38. 7365] ,[-95.0544,38.9829]]"
    ]
  ]
}
 

Существует инструмент под названием jtc , созданный на основе jq и обеспечивающий обычные удобные для печати и компактные выходные форматы для документов JSON. Он также имеет «полукомпактный» формат, в котором самый внутренний объект отображается в компактной форме:

 $ jtc -tc файл
{
   "координаты": [
      [
         [
            [-94,9065, 38,9884],
            [-94,8682, 39,0596],
            [-94,6053, 39,0432],
            [-94,6108, 38,846],
            [-94,6108, 38,7365],
            [-94,9668, 38,7365],
            [-95,0544, 38,7365],
            [-95.0544, 38.9829]
         ]
      ]
   ],
   "тип": "Мультиполигон"
}
 

Я не очень хорошо знаком с jtc поэтому не могу сразу сказать настраивается ли этот выходной формат (беглый взгляд на руководство пользователя подсказывает что это не настраивается именно так, как вы хотите). Также обратите внимание, что jtc

будет сортировать ваши объекты по ключам.


Вас также может заинтересовать jless , если вашей целью является изучение или просмотр данных вручную в терминале. По умолчанию он покажет вам ваши данные следующим образом:

 ▼ {тип: "MultiPolygon", координаты: […]}
    тип: "Мультиполигон"
  ▽ координаты: [[[[…], […], […], […], […], […], […], […]]]]
    ▽ [0]: [[[…], […], […], […], […], […], […], […]]]
      ▽ [0]: [[…], […], […], […], […], […], […], […]]
        ▽ [0]: [-94,9065, 38,9884]
            [0]: -94,9065
            [1]: 38,9884
        ▽ [1]: [-94,8682, 39,0596]
            [0]: -94,8682
            [1]: 39,0596
        ▽ [2]: [-94,6053, 39,0432]
            [0]: -94,6053
            [1]: 39,0432
        ▽ [3]: [-94,6108, 38,846]
            [0]: -94,6108
            [1]: 38,846
        ▽ [4]: ​​[-94,6108, 38,7365]
            [0]: -94,6108
            [1]: 38,7365
        ▽ [5]: [-94,9668, 38,7365]
            [0]: -94,9668
            [1]: 38,7365
        ▽ [6]: [-95,0544, 38,7365]
            [0]: -95,0544
            [1]: 38,7365
        ▽ [7]: [-95,0544, 38,9829]
            [0]: -95,0544
            [1]: 38,9829
 

. .. где каждый раздел легко складывается с помощью клавиш со стрелками.

Цены на Amazon Kinesis Data Firehose — конвейер потоковой передачи данных

При использовании Amazon Kinesis Data Firehose вы платите за объем данных, поступающих в сервис. Нет никаких комиссий за установку или предварительных обязательств. Существует четыре типа использования Kinesis Data Firehose по требованию: прием, преобразование формата, доставка VPC и динамическое разбиение на разделы. Может взиматься дополнительная плата за передачу данных.

Прямая передача и KDS в качестве источника Прием

Базовой функцией потока доставки Kinesis Data KDF является прием и доставка. Цены на передачу являются многоуровневыми и оплачиваются за гигабайт с шагом 5 КБ (запись 3 КБ оплачивается как 5 КБ, запись 12 КБ оплачивается как 15 КБ и т. д.). Дополнительная плата за доставку Kinesis Data KDF не взимается, если не используются дополнительные функции.

Купленные журналы в качестве источника Прием данных

Для записей, происходящих из проданных журналов, стоимость приема является многоуровневой и оплачивается за поглощенный ГБ без увеличения на 5 КБ.

Преобразование формата (дополнительно)

Вы можете включить преобразование формата JSON в Apache Parquet или Apache ORC по тарифу за ГБ на основе ГБ, принимаемых с шагом 5 КБ.

Доставка VPC (дополнительно)

Для потоков доставки с пунктом назначения, который находится в Amazon VPC, вам будет выставляться счет за каждый час, в течение которого ваш поток доставки активен в каждой зоне доступности. Каждый неполный час оплачивается как полный. Плата за обработку данных взимается за ГБ.

Динамическое разделение для доставки Amazon S3 (дополнительно)

Вы можете включить динамическое секционирование, чтобы непрерывно группировать данные по ключам в ваших записях (например, «customer_id») и доставлять данные в префиксы S3, сопоставленные с каждым ключом. При использовании Dynamic Partitioning вы платите за гигабайт, доставленный в S3, за объект и, при необходимости, за час обработки JQ для синтаксического анализа данных.

  • Direct PUT или Kinesis Data Stream в качестве источника

{{#if kinesisfirehose/kinesisfirehose. [За ГБ данных, полученных первых 500 ТБ]}} {{/if}} {{#if kinesisfirehose/kinesisfirehose.[За гигабайт загруженных данных Далее 1 5 ПБ]}} {{/if}} {{#if kinesisfirehose/kinesisfirehose.[За гигабайт принятых данных, следующие 3 ПБ]}} {{/if}} {{#if kinesisfirehose/kinesisfirehose.[За ГБ преобразования формата данных]}}
{{/if}} {{#if kinesisfirehose/kinesisfirehose.[За ГБ данных, переданных в VPC]}}
{{/if}} {{#if kinesisfirehose/kinesisfirehose.[В час на AZ для доставки VPC]}} {{/if}} {{#if kinesisfirehose/kinesisfirehose.[За гигабайт доставленных динамически разделенных данных]}} {{/if}} {{#if kinesisfirehose/kinesisfirehose.[За динамически разделенный объект]}} {{/if}} {{#if kinesisfirehose/kinesisfirehose.[За час обработки JQ]}} {{/if}}


Прием, на ГБ
Первые 500 ТБ в месяц {{локальная валюта kinesisfirehose/kinesisfirehose.[За ГБ данных, полученных первых 500 ТБ].[цена] }}{{else}}>
{{loc-message «N/A»}}{{/if}}
Далее 1,5 ПБ в месяц {{loc-currency kinesisfirehose/kinesisfirehose.[За гигабайт загруженных данных Next 1 5PB].[price]}}{{else}}>{{loc-message «N/A»}}{{/if} }
Следующие 3 ПБ в месяц {{loc-currency kinesisfirehose/kinesisfirehose.[За гигабайт принятых данных, следующие 3 ПБ].[цена] }}{{else}}>{{loc-message «N/A»}}{{/if}}
Более 5 ПБ в месяц Свяжитесь с нами
Преобразование формата, за ГБ {{локальная валюта kinesisfirehose/kinesisfirehose. [За ГБ преобразования формата данных].[цена] }}{{else}}>{{loc-message «N/A»}}{{/if}}
Доставка VPC
За ГБ, обработанных в VPC {{loc-currency kinesisfirehose/kinesisfirehose.[За ГБ данных, переданных в VPC].[цена] }}{{else}}>{{loc-message «N/A»}}{{/if}}
В час на AZ для доставки VPC {{loc-currency kinesisfirehose/kinesisfirehose.[В час на AZ для доставки VPC]. [цена]}}{{else}}>{{loc-message «N/A»}}{{/if}}
Динамическое разделение для доставки Amazon S3
За ГБ доставлено {{loc-currency kinesisfirehose/kinesisfirehose.[За ГБ доставленных динамически разделенных данных].
[price]}}{{else}}>{{loc-message «N/A»}}{ {/if}}
За 1000 доставленных объектов S3 {{loc-currency (math kinesisfirehose/kinesisfirehose.[За динамически разделенный объект].[price] «times» 1000 )}}{{else}}>{{loc-message «N/A»}}{{/if}}
Обработка JQ, в час (необязательно) {{loc-currency kinesisfirehose/kinesisfirehose.[За час обработки JQ].[цена]}}{ {else}}>{{loc-message «N/A»}}{{/if}}
  • Продаваемые журналы как источник

  • {{#if kinesisfirehose/kinesisfirehose. [На ГБ данных, полученных первых 500 ТБ проданных журналов]}} {{/if}} {{#if kinesisfirehose/kinesisfirehose.[За 1 ГБ полученных данных: следующие 1 5 ПБ проданных журналов]}}
    {{/if}} {{#if kinesisfirehose/kinesisfirehose.[На каждый ГБ данных, загруженных следующими 3 ПБ проданных журналов]}} {{/if}} {{#if kinesisfirehose/kinesisfirehose.[За ГБ преобразования формата данных]}} {{/if}} {{#if kinesisfirehose/kinesisfirehose.[За ГБ данных, переданных в VPC]}} {{/if}} {{#if kinesisfirehose/kinesisfirehose.[В час на AZ для доставки VPC]}} {{/if}} {{#if kinesisfirehose/kinesisfirehose.[За гигабайт доставленных динамически разделенных данных]}} {{/if}} {{#if kinesisfirehose/kinesisfirehose.[За динамически разделенный объект]}} {{/if}} {{#if kinesisfirehose/kinesisfirehose.[За час обработки JQ]}} {{/if}}


    Прием, на ГБ
    Первые 500 ТБ в месяц {{локальная валюта kinesisfirehose/kinesisfirehose.[На ГБ данных, полученных первых 500 ТБ торговых журналов] .[price]}}{{else}}>{{loc-message «N/A»}}{{/if}}
     Следующие 1,5 ПБ в месяц {{локальная валюта Журналы].[price]}}{{else}}>{{loc-message «N/A»}}{{/if}}
    Следующие 3 ПБ в месяц {{локальная валюта kinesisfirehose/kinesisfirehose.[На ГБ данных полученных следующих 3 ПБ проданных журналов] .[price]}}{{else}}>{{loc-message «N/A»}}{{/if}}
    Более 5 ПБ в месяц Свяжитесь с нами
    Преобразование формата, за ГБ
    {{loc-currency kinesisfirehose/kinesisfirehose. [За ГБ преобразования формата данных].[price]}}{{else}}>{{loc-message «N/A»}}{{/if}}
    Доставка VPC
    За ГБ, обработанных в VPC {{loc-currency kinesisfirehose/kinesisfirehose.[За ГБ данных, переданных в VPC].[цена] }}{{else}}>{{loc-message «N/A»}}{{/if}}
    В час на AZ для доставки VPC {{loc-currency kinesisfirehose/kinesisfirehose.[В час на AZ для доставки VPC]. [цена]}}{{else}}>{{loc-message «N/A»}}{{/if}}
    Динамическое разделение для доставки Amazon S3
    За ГБ доставлено {{loc-currency kinesisfirehose/kinesisfirehose.[За ГБ доставленных динамически разделенных данных]. [price]}}{{else}}>{{loc-message «N/A»}}{ {/if}}
    За 1000 доставленных объектов S3 {{loc-currency (math kinesisfirehose/kinesisfirehose.[За динамически разделенный объект].[price] «times» 1000 )}}{{else}}>{{loc-message «N/A»}}{{/if}}
    Обработка JQ, в час (необязательно) {{loc-currency kinesisfirehose/kinesisfirehose.[За час обработки JQ].[цена]}}{ {else}}>{{loc-message «N/A»}}{{/if}}

    Стоимость загрузки для Direct PUT и KDS в качестве источника

    Размер записи 3 КБ, округленный до ближайших 5 КБ = 5 КБ

    Цена за первые 500 ТБ в месяц = ​​0,029 доллара СШАза ГБ

    ГБ, выставленный за прием = (100 записей/с * 5 КБ/запись) / 1 048 576 КБ/ГБ * 30 дней в месяц * 86 400 сек/день = 1 235,96 ГБ

    Ежемесячная плата за прием = 1 235,96 ГБ * 0,029 USD /ГБ = 35,84 долл. США

    Стоимость приема проданных журналов в качестве источника

    Размер записи 0,5 КБ (500 байт) = 0,5 КБ (без увеличения на 5 КБ)

    Цена за первые 500 ТБ в месяц = ​​0,13 долл. США за ГБ

    ГБ в счете проглатывание = (100 записей/сек * 0,5 КБ/запись) / 1 048 576 КБ/ГБ * 30 дней в месяц * 86 400 сек/день = 123,59GB

    Ежемесячная плата за передачу данных = 123,59 ГБ * 0,13 USD/ГБ = 16,06 USD

    Стоимость преобразования формата: JSON в Parquet или ORC (необязательно) для расчета затрат.

    Цена за конвертированный ГБ = 0,018 доллара США

    Ежемесячная плата за преобразование формата = 1235,96 ГБ * 0,018 доллара США за конвертированный ГБ = 22,25 доллара США

    Стоимость доставки VPC (необязательно) к приему данных и использует ГБ, выставленные за прием, для расчета затрат.

    Цена за гигабайт, обработанный в VPC = 0,01 USD

    Цена за час AZ для доставки VPC = 0,01 USD

    Ежемесячная плата за обработку VPC = 1235,96 ГБ * 0,01 USD/ГБ обработана = 12,35 USD

    Ежемесячная почасовая оплата VPC = 24 часов * 30 дней/ месяц * 3 AZ = 2160 часов * 0,01 USD/час = 21,60 USD Общая ежемесячная плата за VPC = 33,95 USD

    Стоимость динамического секционирования (необязательно)

    Динамическое секционирование — это дополнительное дополнение к приему данных, которое использует ГБ и объекты, доставленные в S3 , а также дополнительные часы обработки JQ для расчета затрат. В этом примере предполагается, что объекты размером 64 МБ доставляются в результате настройки подсказки буфера потока доставки.

    Цена за доставленный ГБ = 0,020 USD
    Цена за 1000 доставленных объектов S3 0,005 USD = 0,005 USD
    Цена за час обработки JQ = 0,07 USD 400 секунд/день * 30 дней в месяц = ​​741,58 ГБ

    Ежемесячная плата за доставленные ГБ = 741,58 ГБ * 0,02 USD за доставленный ГБ = 14,83 USD

    Количество доставленных объектов = 741,58 ГБ * 1024 МБ/ГБ / размер объекта 64 МБ = 11 866 объектов

    Ежемесячно плата за объекты, доставленные в S3 = 11 866 объектов * 0,005 долл. США / 1000 объектов = 0,06 долл. США

    Ежемесячная плата за JQ (если включено) = 70 часов использования JQ в месяц * 0,07 долл. США/час обработки JQ = 4,90 долл. США

    Вход в консоль

    Узнайте об AWS

    • Что такое AWS?
    • Что такое облачные вычисления?
    • Инклюзивность, разнообразие и справедливость AWS
    • Что такое DevOps?
    • Что такое контейнер?
    • Что такое озеро данных?
    • Облачная безопасность AWS
    • Что нового
    • Блоги
    • Пресс-релизы

    Ресурсы для AWS

    • Начало работы
    • Обучение и сертификация
    • Библиотека решений AWS
    • Архитектурный центр
    • Часто задаваемые вопросы по продуктам и техническим вопросам
    • Аналитические отчеты
    • Партнеры AWS

    Разработчики на AWS

    • Центр разработчиков
    • SDK и инструменты
    • .