Skip to content

Instantly share code, notes, and snippets.

@Slach
Last active November 18, 2017 15:40
Show Gist options
  • Save Slach/dbbc874bf102df469d7daed326dc5456 to your computer and use it in GitHub Desktop.
Save Slach/dbbc874bf102df469d7daed326dc5456 to your computer and use it in GitHub Desktop.
Yandex Metrika Logs Api wrong TSV in some fields

Обидно, когда не получается вместе использовать два таких достойных продукта

Суть проблемы: При выгрузке данных из Metrica Logs API, генерируются TSV файлы которые потом не распознаются парсером Clickhouse для TabSeparatedWithNames формата и соответвенно не могут напрямую быть загружены в локальный Clickhouse

вот основные ошибки — одинарные ковычки, которые обрамляют строки в комплексных типах Array (String) эскейпятся через
пример это поля ym:s:goalsDateTime и ym:s:goalsOrder

чтобы обойти это в «официальном загрузчике» стоит вот такой костыль https://github.com/yndx-metrika/logs_api_integration/blob/master/logs_api.py#L170 это делает загрузчик дико неэффективным по памяти (надо взять все данные и пройтись по ним заменой строк) и не позволяет грузить через него действительно большие объемы данных

— комплексные поля типа ym:s:goalsCurrency — тип в Clickhouse Array (String), наоборот записываются без квотирования даже в одинарные ковычки, в результате вместо ['',''] получается [,]…

— самое фиговое случается для поля ym:s:params сначала в нем добавляется экранирование через , а потом, поскольку в значении поля встречаются двойные кавычки, добавляется их экранирование через задваивание, на выходе вместо Array (String) получается вот такая ерунда

"[\'{""__ym"":{""ads"":{""w"":{""t"":0,""l"":0,""w"":1366,""h"":656},""p"":""w"":1349,""h"":3965},""a""[],""full"":1}}}\']"

Что делать? Разработчики помогите пофиксить баги и сделать продукт лучше?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment