БД Вайб

схема raw

Cырые данные БД (реплика переехала из PostgreSQL в ClickHouse, обновление near-real-time).

adminhistory

История действий администраторов (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id записи2
2createdtimestampДата создания2020-10-20 10:38:44
3operationvarchar(255)Название операцииtransfer
4notevarchar(255)Пояснениеscan_mode,meta,organizer
5external_idvarchar(255)Внешний id5f562356da2ec64587c0ade3
6admin_idvarchar(255)Телефон администратора+71234567890
7customer_idvarchar(255)Телефон покупателя+71234567890
8event_idint4id мероприятия7480
9ticket_idint4id билета77131

adminlog

Лог действий администраторов.

#ПолеТипОписаниеПример
1idserial4id лога1
2createdtimestampДата создания2024-12-06 13:04:45
3resourcevarchar(255)Источникticket / customer / promo / event / push / campaign / organizer / city
4source_idvarchar(255)id источника1234567
5actionvarchar(255)Действиеactivate_customer / allocate / balance / block_customer / create / deauthorize_customer / delete / edit / get_balance / make_withdrawal / notify / redeem / refund / report / send / send_message_to_chat / sync / transfer / update
6metajsonМетаданные{“mint”: 30000, “burn”: 0, “currency”: “BONUS_RUB”}
7operator_idvarchar(255)Телефон оператора+71234567890

balance

Балансы покупателей и организаторов.

#ПолеТипОписаниеПример
1idserial4id баланса29529
2createdtimestampДата создания2024-10-29 10:12:29
3updatedtimestampДата обновления2024-10-29 10:12:29
4versionint4Версия8
5amountint4Сумма на балансе126000
6currencyvarchar(12)ВалютаBONUS_RUB / RUB / USD
7customer_idvarchar(255)id покупателя+71234567890
8organizer_idint4id организатора7

booking

Бронирования (рестораны).

#ПолеТипОписаниеПример
1system_varchar(255)Система бронированияTICKETLAND / MRS
2external_idvarchar(255)Внешний id бронирования123456
3createdtimestampДата создания2026-04-28 11:51:30
4statusvarchar(20)Статусpending / confirmed / cancelled
5fiovarchar(255)ФИО пользователяИван Иванов
6amountint4Количество человек2
7starttimestampВремя начала бронирования2026-05-28 10:14:00
8commenttextКомментарий—
9error_messagetextТекст ошибкиNULL
10customer_idvarchar(255)Телефон пользователя+71234567890
11location_idvarchar(255)id локации из таблицы location1234

campaign

Рекламные кампании (бонусы, промокоды).

#ПолеТипОписаниеПример
1idserial4id кампании114
2createdtimestampДата создания2025-10-17 11:48:44
3updatedtimestampДата обновления2025-10-17 11:48:44
4titlevarchar(100)Название кампанииНевероятная кампания
5title_in_appvarchar(50)Название в приложенииНевероятная кампания
6descriptiontextОписание—
7starttimestampДата начала2025-09-02 06:31:00
8endtimestampДата завершения2025-10-01 05:30:00
9rewardint4Сумма награды / бонуса30000
10currencyvarchar(12)Валюта наградыBONUS_RUB
11promocodevarchar(50)ПромокодVIBE300
12statusvarchar(255)Статусongoing / finished
13event_idint4id мероприятия—
14is_activeboolАктивнаTRUE / FALSE
15terms_and_conditionsvarchar(255)Условия кампании (ссылка)—
16usage_limitint4Лимит использований11

card

Банковские карты покупателей (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id карты12345
2createdtimestampДата создания2025-02-20 08:38:50
3updatedtimestampДата обновления2025-02-20 15:30:02
4last4varchar(4)Последние 4 цифры1234
5tokenvarchar(255)Токен1234567890
6is_hiddenboolСкрытаTRUE / FALSE
7providervarchar(20)Провайдерtinkoff / qiwi
8statusvarchar(10)Статусnew / active / invalid
9customer_idvarchar(255)id покупателя+71234567890
10typevarchar(20)Платёжная системаDiscover / Mastercard / MIR / Visa
11digestvarchar(64)Хэшированный номер карты—
12expire_datedateСрок действия2026-03-31

city

Города.

#ПолеТипОписаниеПример
1idserial4id города12345
2createdtimestampДата создания2025-04-03 12:26:12
3updatedtimestampДата обновления2025-04-03 12:48:41
4external_idvarchar(10)Внешний id1234567
5namevarchar(255)Название городаVidemala
6name_localvarchar(255)Название на местном языкеVidemala
7latitudenumeric(10,7)Широта41.61299
8longitudenumeric(10,7)Долгота-6.04056
9country_codevarchar(2)Код страныES
10timezonevarchar(50)Часовой поясEurope/Madrid
11name_prepositionalvarcharНазвание города в предложном падежеЗвенигороде

complaint

Жалобы пользователей (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id жалобы1
2createdtimestampДата создания2022-08-02 14:02:58
3complainer_idvarchar(255)Телефон жалующегося+71234567890
4blamed_customer_idvarchar(255)Телефон обвиняемого+71234567890
5bodytextТекст жалобыcomplain about avatar / description / message / user / user profile
6message_idint4id сообщения105809
7post_idint4id поста1525
8event_idint4id мероприятия1223824

customer

Покупатели (пользователи приложения).

#ПолеТипОписаниеПример
1idserial4id покупателя1537858
2createdtimestampДата создания2024-09-15 16:30:27
3emailvarchar(255)Email***@inbox.ru
4is_activeboolАктивенTRUE / FALSE
5phonevarchar(255)Телефон+71234567890
6updatedtimestampДата обновления2024-10-01 19:35:09
7metajsonМетаданные (IP, версия клиента, FCM)—
8last_namevarchar(255)Фамилия—
9first_namevarchar(255)Имя—
10languagevarchar(2)Языкru / en / az / de / es / fr / tr …
11is_superboolСуперпользовательTRUE / FALSE
12nicknamevarchar(255)Никнейм—
13biovarchar(512)Описание профиля—
14bonus_agreementboolСогласие на бонусыTRUE / FALSE
15authorizedtimestampДата последней авторизации2024-09-15 16:30:58
16birthdaytimestampДень рождения—
17gendervarchar(6)Пол—
18city_idvarchar(10)id города524901
19notify_chatboolОповещения из чатаTRUE / FALSE
20notify_adsboolОповещения о рекламеTRUE / FALSE
21notify_awardboolОповещения о наградахTRUE / FALSE
22notify_cashboolОповещения о балансеTRUE / FALSE
23first_authorizedtimestampДата первой авторизации2024-09-15 16:30:58
24avatar_urivarcharСсылка на аватар—
25saltvarcharСоль для пароля—
26onboardingboolПрошёл онбордингTRUE / FALSE

customercampaign

Участие покупателей в рекламных кампаниях.

#ПолеТипОписаниеПример
1idserial4id записи1
2createdtimestampДата создания2025-08-19 12:07:41
3updatedtimestampДата обновления2025-08-19 12:07:41
4participate_datetimestampДата принятия участия2025-08-19 12:07:41
5reward_datetimestampДата вознаграждения2025-08-19 12:07:41
6campaign_idint4id рекламной кампании36
7customer_idvarchar(255)Телефон покупателя+71234567890

customerevent

Мероприятия, которые покупатель отслеживает / скрыл.

#ПолеТипОписаниеПример
1idserial4id записи3321650
2createdtimestampДата создания2025-11-26 09:14:27
3message_idint4id сообщения—
4event_idint4id мероприятия586426604
5customer_idvarchar(255)Телефон покупателя+71234567890
6notifyboolОповещатьTRUE / FALSE
7hiddenboolСкрытоTRUE / FALSE

customerlog

Лог действий покупателей (настройки оповещений) (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id лога1
2createdtimestampДата создания2025-10-27 09:54:50
3actionvarchar(12)Действиеnotify_ads / notify_award / notify_cash / notify_chat
4doneboolЗавершеноTRUE / FALSE
5ipvarchar(15)IP-адрес12.345.678.901
6clientvarchar(128)КлиентTickets Wallet 7.0.25
7customer_idvarchar(255)Телефон покупателя+71234567890

customersubscription

Подписки покупателей — неактуальные данные по старой функциональности. Нигде не используются (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id записи3
2createdtimestampДата создания2020-02-17 21:43:09
3updatedtimestampДата обновления2020-02-17 21:43:09
4versionint4Версия1
5auto_paymentboolАвтоплатёжTRUE / FALSE
6paidtimestampДата оплаты2020-02-19 11:51:17
7is_activeboolАктивнаTRUE / FALSE
8payment_errorboolОшибка оплатыTRUE / FALSE
9sourcevarchar(255)Источник оплатыcloudpayments
10source_idvarchar(255)id источника оплатыsc_941c64b8…
11metajsonМетаданные{}
12subscription_idint4id подписки1
13customer_idvarchar(255)Телефон покупателя+71234567890
14active_beforetimestampАктивна до2020-02-17 21:43:09

customertransaction

Транзакции покупателей.

#ПолеТипОписаниеПример
1idserial4id транзакции6729959
2createdtimestampДата создания2025-02-21 12:01:02
3updatedtimestampДата обновления2025-02-21 12:01:02
4amountint4Сумма транзакции0
5currencyvarchar(12)ВалютаBONUS_RUB / EUR / RUB / USD
6is_pendingboolОжиданиеTRUE / FALSE
7is_rejectedboolОтказTRUE / FALSE
8typeint4Тип транзакции (зашифрован)92 / 54 / 4 / 30 / 50 / 40 / 60 / 14 / 80 / 70 / 20 / 90 / 45 / 100
9metajsonМетаданные{}
10customer_idvarchar(255)Телефон покупателя+71234567890
11ticket_idint4id билета4121350
12event_idint4id мероприятия580773048
13hiddenboolСкрытаTRUE / FALSE
14system_varchar(255)СистемаPHANTOM / TC / TEST
15bc_transactionvarcharid транзакции в блокчейне0x0cf44ba51a0d221b8d3de3d62e03d29d96e54834baf75791d4383c442e06f4ec
16owner_idvarcharТелефон владельца+71234567890
17external_idvarchar(255)Внешний id5eb2d1da7b197e4abcffc000_5eb2d1da7b197e4abcffc002_4586

Расшифровка поля type:

КодТипОписание
4allocateВыпуск билета (при покупке через виджет)
14subscriptionСписание за подписку на мероприятия
20sellПродажа билета на бирже (начисление средств)
30referralРеферальное начисление
40withdrawalСоздание запроса на вывод средств
45donateДонат от зрителя артисту
50refillНачисление средств в различных случаях
54burnСписание средств
60refundВозврат билета (возможно начисление)
70redeemПогашение билета
80transferПередача (дарение) билета
90escrow_unlockВывод заблокированных средств
92escrow_canceledОтмена блокировки средств
100rewardНачисление вознаграждения (за акции и т.д.)

customerwithdrawal

Выводы средств покупателями.

#ПолеТипОписаниеПример
1idserial4id вывода21
2createdtimestampДата создания2019-12-15 21:51:59
3updatedtimestampДата обновления2019-12-15 21:52:00
4versionint4Версия4
5statusvarchar(50)Статусapproved / completed / error / new / rejected
6amountint4Сумма128182
7currencyvarchar(12)ВалютаRUB
8metajsonРеквизиты (банк, счёт, паспорт, ИНН)—
9customer_idvarchar(255)Телефон покупателя+71234567890
10typevarchar(50)Тип выводаbalance / bank_account / dummy / qiwi / tinkoff / stripe
11manager_idvarchar(255)Телефон менеджера—
12commissionint4Комиссия3000

datingpost

Посты в разделе знакомств на мероприятии.

#ПолеТипОписаниеПример
1idserial4id поста4645
2createdtimestampДата создания2023-07-24 04:18:53
3updatedtimestampДата обновления2023-07-24 04:18:53
4versionint4Версия1
5event_idint4id мероприятия1215706
6customer_idvarchar(255)Телефон покупателя+71234567890
7bodytextТекст постаИщу друзей
8hiddenboolСкрытTRUE / FALSE

event

Мероприятия (передаются из Ядра). Мероприятия и ТС, и вайба (вайбовые определять по feed_add_at).

#ПолеТипОписаниеПример
1idserial4id мероприятия2
2createdtimestampДата создания2019-02-13 21:26:14
3updatedtimestampДата обновления2021-06-04 07:37:23
4contractvarcharid контракта—
5currencyvarcharВалютаEUR / RUB / USD
6descriptiontextОписание—
7endtimestampДата завершения2019-11-30 17:00:00
8external_idvarcharВнешний id5c648b51dc7f87000c79c773
9mediavarcharОбложка / медиа—
10namevarcharНазваниеНевероятное мероприятие
11starttimestampДата начала2019-08-01 07:00:00
12metajsonМетаданные—
13group_idint4id группы мероприятий2
14city_idvarcharid города524901
15organizer_idint4id организатора1
16statevarcharСтатусcanceled / finished / paused / published
17is_refundableboolВозврат денег за билетыTRUE / FALSE (по умолчанию TRUE)
18is_transferableboolДоступна передача (дарение) билетовTRUE / FALSE
19resale_readyboolГотово к перепродажеTRUE / FALSE
20min_resale_price_ppmint4Минимальная цена перепродажи0
21max_resale_price_ppmint4Максимальная цена перепродажи0
22scan_modeint4Режим сканирования10=Dynamic QR / 20=Static QR / 24=Static barcode / 25=Access code / 30=Manual
23referralint2Реферальная программа—
24org_commissionint2Комиссия организатора50
25resale_freeboolПерепродажа бесплатных билетовTRUE / FALSE
26is_chat_availableboolДоступен чат мероприятияTRUE / FALSE
27timezonevarcharЧасовой поясEurope/Vilnius
28categoryvarcharid категории—
29org_mediavarcharМедиа организатора—
30hidden_dateboolСкрытая датаTRUE / FALSE
31age_restrictionint4Возрастное ограничение—
32amountint4Количество билетов—
33price_minint4Минимальная цена—
34amount_vacantint4Количество свободных билетов—
35ratingint4Рейтинг0
36transfer_freeboolБесплатная передача билетовTRUE / FALSE
37pushcardboolПуш-карточкаTRUE / FALSE
38hidden_feedboolСкрыто из лентыTRUE / FALSE
39system_varcharСистемаPHANTOM / TC / TEST
40syncboolСинхронизированоTRUE / FALSE
41feedboolПоказывать в лентеTRUE / FALSE
42location_idvarcharid локации—
43feed_add_attimestampДата добавления в ленту—
44feed_remove_attimestampДата удаления из ленты—
45show_chat_participants_numberboolПоказывать число участников чатаTRUE / FALSE

eventgroup

Группы мероприятий (мета-мероприятия).

#ПолеТипОписаниеПример
1idserial4id группы2
2createdtimestampДата создания2019-02-13 21:26:14
3updatedtimestampДата обновления2023-01-19 09:12:14
4external_idvarchar(255)Внешний id—
5namevarchar(255)Название группыНевероятное мероприятие
6organizer_idint4id организатора1
7system_varchar(255)СистемаPHANTOM / TC / TEST

eventmarker

Отметки покупателей на мероприятиях (закладки).

#ПолеТипОписаниеПример
1idserial4id отметки121523
2createdtimestampДата создания2025-11-29 17:02:24
3event_idint4id мероприятия586364845
4customer_idint4id покупателя505709

eventrating

Оценки мероприятий покупателями.

#ПолеТипОписаниеПример
1idserial4id оценки1
2createdtimestampДата создания2020-02-03 15:53:10
3updatedtimestampДата обновления2020-02-03 15:53:10
4valueint4Оценка3
5commentvarchar(255)КомментарийBoring
6event_idint4id мероприятия339
7customer_idint4id покупателя18942

funds

Средства, связанные с билетами и мероприятиями (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id записи8684
2createdtimestampДата создания2024-02-20 15:45:17
3updatedtimestampДата обновления2024-02-20 15:45:17
4versionint4Версия0 / 1
5amountint4Сумма35000
6currencyvarchar(255)ВалютаRUB
7customer_idvarchar(255)Телефон покупателя+71234567890
8event_idint4id мероприятия145754788
9ticket_idint4id билета434393
10is_pendingboolОжиданиеTRUE / FALSE
11transaction_idint4id транзакции1335809

importlog

Лог импорта данных из внешних систем (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id записи51961
2createdtimestampДата создания2024-06-25 08:00:49
3statusvarchar(10)СтатусFAIL
4messagevarchar(511)СообщениеNo ticket found
5external_idvarchar(255)Внешний id6599704bf47a001dc20173b9
6topicvarchar(255)Тема импортаcheckpoint / events / orders_done / refund_requests
7systemvarcharСистемаPHANTOM / TC / TICKETLAND

integration

Интеграции с внешними системами (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id интеграции1
2createdtimestampДата создания2019-02-22 09:22:58
3updatedtimestampДата обновления2019-02-22 09:22:58
4is_activeboolАктивнаTRUE / FALSE
5is_brokenboolСломанаTRUE / FALSE
6typeint4Тип интеграции10
7last_syncedtimestampДата последней синхронизации2019-05-13 15:30:12
8external_idvarchar(255)Внешний id307506547755
9metajsonМетаданные{}
10organizer_idint4id организатора4
11events_readyboolМероприятия синхронизированыTRUE / FALSE
12tickets_readyboolБилеты синхронизированыTRUE / FALSE

like

Лайки на посты в дэйтинге.

#ПолеТипОписаниеПример
1idserial4id лайка1
2createdtimestampДата создания2022-07-30 19:34:20
3customer_idvarchar(255)Телефон покупателя+71234567890
4post_idint4id поста361
5written_to_authorboolНаписано авторуTRUE / FALSE

location

Локации (площадки и рестораны).

#ПолеТипОписаниеПример
1system_varchar(255)СистемаTICKETLAND / TC / MRS
2external_idvarchar(255)Внешний id68d535794ffc8616b7713ec5
3createdtimestampДата создания2026-04-14 00:30:45
4namevarchar(255)НазваниеНевероятный ресторан
5addresstextАдресул. Ленина, д. 1
6latitudenumeric(10,7)Широта55.7521010
7longitudenumeric(10,7)Долгота37.5842820
8descriptiontextОписание—
9city_idvarchar(10)id города из таблицы city547523
10typevarchar(20)Типvenue / restaurant
11imagetextКартинкаNULL
12tagsjsonПодкатегории[“Восточная”, “кавказская”]
13ratingfloat4Рейтинг ресторана (у площадок NULL)4.7

message

Сообщения в чате мероприятия.

#ПолеТипОписаниеПример
1idserial4id сообщения8136
2createdtimestampДата создания2020-03-02 13:44:46
3bodytextТекст сообщенияБилетный чат?) прикольно)
4modifiedtimestampДата редактирования—
5pinnedboolЗакрепленоTRUE / FALSE
6customer_idvarchar(255)Телефон покупателя+71234567890
7event_idint4id мероприятия338
8replay_idint4id родительского сообщения7510
9is_organizerboolСообщение от организатораTRUE / FALSE
10typevarchar(10)Типmessage / welcome
11is_deletedboolУдаленоTRUE / FALSE

organizer

Организаторы мероприятий.

#ПолеТипОписаниеПример
1idserial4id организатора570324049
2createdtimestampДата создания2024-10-28 19:23:35
3updatedtimestampДата обновления2024-10-28 19:23:35
4external_idvarchar(255)Внешний id671fe4b43824ff92e4991b9f
5namevarchar(255)НазваниеНевероятный организатор
6legalsjsonЮридические данные (ИНН, ОГРНИП, адрес)—
7system_varchar(255)СистемаPHANTOM / TC / TEST
8mediavarcharМедиа/логотип—

promo

Промобаннеры в приложении.

#ПолеТипОписаниеПример
1idserial4id промобаннера207
2createdtimestampДата создания2025-09-01 08:57:20
3updatedtimestampДата обновления2024-08-27 12:44:14
4is_activeboolАктивенTRUE / FALSE
5titlevarchar(255)ЗаголовокНевероятный промобаннер
6subtitlevarchar(255)Подзаголовок—
7picturevarchar(255)Картинка (URL)—
8metajsonСписок id мероприятий{“events”: […]}
9dtstarttimestampДата начала2023-01-26 10:00:00
10dtendtimestampДата завершения2023-01-29 23:59:00
11button_titlevarchar(255)Название кнопкиКупить билет
12clicksint4Клики по кнопке1000
13priorityint4Приоритет1
14filter_titlevarcharЗаголовок фильтраPHARAOH

push

Push-уведомления.

#ПолеТипОписаниеПример
1idserial4id пуша304
2createdtimestampДата создания2025-12-05 10:30:06
3namevarchar(64)Внутреннее имяНевероятный пуш
4titlevarchar(64)ЗаголовокНевероятный пуш
5messagevarchar(250)Текст сообщенияТекст невероятного пуша
6deeplinkvarchar(250)Ссылкаhttps://web.vibeapp.ru/…
7typevarchar(15)Типevents / org / csv_or_xlsx / customers
8sent_attimestampДата отправки2025-12-05 10:30:06
9statusvarchar(10)Статусnew / sent
10metajsonМетаданные{“events”: […]}
11sentint4Количество отправок24
12categoryvarchar(10)Категорияads / award

reaction

Реакции на сообщения в чате.

#ПолеТипОписаниеПример
1idserial4id реакции1
2createdtimestampДата создания2020-09-17 13:13:44
3codevarchar(4)Реакция (эмодзи)😀
4message_idint4id сообщения10739
5customer_idvarchar(255)Телефон покупателя+71234567890

receipt

Фискальные чеки (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id чека1781
2createdtimestampДата создания2020-03-25 08:01:09
3request_idvarchar(255)id запросаord-1234-5
4rtypevarchar(255)Типorder_refund / order_income / ticket_refund
5statusvarchar(255)Статусfail / success
6responsejsonОтвет фискального сервиса—
7customer_idvarchar(255)Телефон покупателя+71234567890
8order_idint4id заказа1044
9requestjsonТело запроса—

subscription

Платные подписки (абонементы) — данные по старой функциональности (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id подписки2
2createdtimestampДата создания2020-02-17 21:39:01
3updatedtimestampДата обновления2020-02-17 21:39:01
4descriptiontextОписаниеНевероятная подписка
5is_activeboolАктивнаTRUE / FALSE
6namevarchar(255)НазваниеНевероятная подписка
7sys_fee_ppmint4Цена подписки100000
8payment_intervalvarchar(10)Период оплатыday / month
9payment_periodint2Оплачиваемый период1
10currencyvarchar(12)ВалютаRUB
11price1int4Цена на 1 месяц—
12price3int4Цена на 3 месяца—
13price6int4Цена на 6 месяцев—
14organizer_idint4id организатора6
15mediavarcharМедиа/обложка—

systemorder

Таблица заказов (передается Ядром). Там все подряд - и заказы ТС, и заказы ТЛ, и заказы вайба. Отличать по origin.

#ПолеТипОписаниеПример
1system_varchar(255)СистемаTC / TICKETLAND
2external_idvarchar(255)Внешний id заказа (order_id из ticket)69c12e212ac81ae4a325f175
3currencyvarchar(12)ВалютаRUB / EUR / USD
4amountint8Сумма (в копейках)440000
5originvarchar(255)Источникvibe / tc / tl
6done_attimestampДата оплаты2026-03-23 12:16:07
7created_attimestampДата создания2026-03-23 12:16:08
8numbervarchar(255)Номер заказа101353857
9customer_idvarchar(255)Телефон покупателя+71234567890
10bonus_amountint8Кол-во использованных бонусов вайба220000

ticket

Билеты.

#ПолеТипОписаниеПример
1idserial4id билета758934
2createdtimestampДата создания2019-02-13 21:27:57
3updatedtimestampДата обновления2019-04-05 09:54:37
4external_idvarcharВнешний id5c648b63e977f90001015145
5barcodevarcharШтрихкод15744945903598400
6statusvarcharСтатусactive / refunded / used / relocated
7usesint2Количество использований0
8ticketvarcharвнешний id билета (?)68924c43d22a44519c5e7e40b8c667e2
9categoryvarcharКатегория билетаТанцевальный партер
10seatjsonМесто{“row”: “2”, “number”: “21”}
11customer_idvarcharТелефон покупателя+71234567890
12event_idint4id мероприятия4
13sale_priceint4Цена продажи3
14sale_tokenvarcharТокен продажи—
15price_lastint4Последняя цена—
16versionint4Версия3
17currencyvarcharВалютаEUR / RUB / USD
18price_nominalint4Номинальная цена0
19is_blockedboolЗаблокированTRUE / FALSE
20hopsint2Количество передач билета—
21descriptionvarcharОписание—
22vendor_mediavarcharМедиа распространителя—
23reservedtimestampВремя резервирования—
24metajsonМетаданные—
25transferableboolДоступна передачаTRUE / FALSE
26allocatedtimestampВремя аллокации2019-02-16 10:23:05
27system_varcharСистемаMRS_CINEMA / TC / TICKETLAND
28is_smartboolСмарт-билетTRUE / FALSE
29order_idvarcharid заказа (external_id из systemorder)—

order_id и customer_id перезаписываются при возврате и повторном выпуске билета: билет не удаляется, а освобождается и выпускается заново на другого покупателя. Поэтому ticket хранит текущее состояние, а история владения — в customertransaction (типы 4 allocate, 60 refund, 80 transfer).


ticketcategory

Категории билетов мероприятия.

#ПолеТипОписаниеПример
1idserial4id категории46173548
2external_idvarchar(255)Внешний id66a91592bee78f48b6dcd807
3namevarchar(255)Название категорииТанцевальный партер
4descriptiontextОписаниеДо 16 лет включительно
5event_idint4id мероприятия575631366
6system_varchar(255)СистемаTC
7transferableboolДоступен трансферTRUE / FALSE

ticketorder

Перепроданные билеты.

#ПолеТипОписаниеПример
1idserial4id заказа41505
2createdtimestampДата создания2023-12-02 07:13:30
3updatedtimestampДата обновления2023-12-02 07:13:30
4versionint4Версия1
5sourcevarcharИсточник оплатыcloudpayments / qiwi / stripe / balance / tinkoff
6source_idvarcharid источника оплатыe52e463b-…
7is_finishedboolЗавершёнTRUE / FALSE
8is_paidboolОплаченTRUE / FALSE
9is_succeededboolУспешноTRUE / FALSE
10is_firstboolПервая покупка/перепродажаTRUE / FALSE
11total_priceint4Общая стоимость99000
12customer_idvarcharТелефон покупателя+71234567890
13ticket_idint4id билета398302
14currencyvarcharВалютаEUR / BONUS_RUB / RUB / USD
15referral_idvarcharid реферала—
16seller_idvarcharТелефон продавца+71234567890
17org_feeint4Комиссия организатора60000
18price_lastint4Последняя цена180000
19ref_feeint4Комиссия реферала—
20sys_feeint4Комиссия системы—
21ref_escrowint4Заблокированные средства реферала—
22sel_escrowint4Заблокированные средства продавца—
23org_escrowint4Заблокированные средства организатора—
24transaction_idint4id транзакции1208208
25acquiring_feeint4Комиссия эквайринга—
26is_refundedboolВозвращёнTRUE / FALSE
27metajsonМетаданные—

tickettransaction

Транзакции по билетам (перепродажи, возвраты и т.д.)

#ПолеТипОписаниеПример
1idserial4id транзакции30214
2createdtimestampДата создания2019-11-05 16:38:22
3updatedtimestampДата обновления2019-11-05 16:38:22
4operationvarchar(50)Операцияredeem / sell / transfer / refund / buy / allocate
5ticket_idint4id билета18022
6is_finishedboolЗавершенаTRUE / FALSE
7owner_idvarchar(255)Телефон владельца+71234567890
8customer_idvarchar(255)Телефон покупателя+71234567890
9statusboolСтатус транзакцииTRUE / FALSE
10bc_transactionvarcharid транзакции в блокчейне—
11metajsonМетаданные—

consumer_keeper

Служебная таблица блокировок консьюмеров (обработка очередей/kafka) (осталась только в PG).

#ПолеТипОписаниеПример
1consumertextИмя консьюмера—
2locked_tilltimestamptzЗаблокирован до—
3locked_bytextКем заблокирован—

balanceburner

Сгорание баланса/бонусов покупателей.

#ПолеТипОписаниеПример
1idserial4id записи—
2createdtimestampДата создания—
3updatedtimestampДата обновления—
4amountint4Сумма сгорания—
5currencyvarcharВалюта—
6is_doneboolСгорание выполненоTRUE / FALSE
7burn_attimestampДата, когда сгорит—
8customer_idvarcharТелефон покупателя—

eventgrouptocustomer

Подписки покупателей на группы мероприятий (eventgroup) (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id записи—
2createdtimestampДата создания—
3updatedtimestampДата обновления—
4group_idint4id группы мероприятий—
5customer_idint4id покупателя—

httplog

Лог HTTP-запросов (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id записи—
2createdtimestampДата создания—
3updatedtimestampДата обновления—
4urlvarcharURL запроса—
5methodvarcharHTTP-метод—
6status_codeint4Код ответа—
7requestjsonТело запроса—
8responsejsonТело ответа—

migratehistory

История применённых миграций БД (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id записи—
2namevarcharНазвание миграции—
3migrated_attimestampДата применения—

systemoperation

Системные операции (платежи, выводы и др.) (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id операции—
2createdtimestampДата создания—
3updatedtimestampДата обновления—
4versionint4Версия—
5redirect_urlvarcharСсылка редиректа—
6statusvarcharСтатус операции—
7typevarcharТип операции—
8metajsonМетаданные—
9transaction_idint4id транзакции—
10customer_idvarcharТелефон покупателя—
11is_pendingboolОжиданиеTRUE / FALSE
12uidvarcharУникальный идентификатор—
13timeoutint4Таймаут (сек)—
14system_varcharСистема—

teaser

Тизеры в приложении (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id тизера—
2createdtimestampДата создания—
3texttextТекст тизера—
4city_idvarcharid города—
5mediavarcharКартинка—
6linksjsonСсылки—

transaction_organizer

Транзакции организаторов (осталась только в PG).

#ПолеТипОписаниеПример
1idserial4id транзакции—
2createdtimestampДата создания—
3updatedtimestampДата обновления—
4amountint4Сумма—
5typeint4Тип транзакции—
6currencyvarcharВалюта—
7is_pendingboolОжиданиеTRUE / FALSE
8event_idint4id мероприятия—
9organizer_idint4id организатора—

Связи между таблицами

ticket.event_id              → event.id
ticket.customer_id           → customer.phone
ticket.order_id              → systemorder.external_id

ticketorder.ticket_id        → ticket.id
ticketorder.customer_id      → customer.phone
ticketorder.seller_id        → customer.phone
ticketorder.referral_id      → customer.phone

tickettransaction.ticket_id  → ticket.id
tickettransaction.owner_id   → customer.phone
tickettransaction.customer_id → customer.phone

ticketcategory.event_id      → event.id

customertransaction.ticket_id → ticket.id
customertransaction.event_id  → event.id
customertransaction.customer_id → customer.phone
customertransaction.owner_id  → customer.phone

customercampaign.campaign_id → campaign.id
customercampaign.customer_id → customer.phone

customersubscription.subscription_id → subscription.id
customersubscription.customer_id     → customer.phone

customerwithdrawal.customer_id → customer.phone

customerevent.event_id       → event.id
customerevent.customer_id    → customer.phone

customerlog.customer_id      → customer.phone

campaign.event_id            → event.id

event.organizer_id           → organizer.id
event.group_id               → eventgroup.id
event.city_id                → city.id
event.location_id            → location.id

eventgroup.organizer_id      → organizer.id

eventgrouptocustomer.group_id    → eventgroup.id
eventgrouptocustomer.customer_id → customer.id

eventrating.event_id         → event.id
eventrating.customer_id      → customer.id

eventmarker.event_id         → event.id
eventmarker.customer_id      → customer.id

datingpost.event_id          → event.id
datingpost.customer_id       → customer.phone

like.post_id                 → datingpost.id
like.customer_id             → customer.phone

message.event_id             → event.id
message.customer_id          → customer.phone

reaction.message_id          → message.id
reaction.customer_id         → customer.phone

complaint.event_id           → event.id
complaint.complainer_id      → customer.phone
complaint.blamed_customer_id → customer.phone
complaint.message_id         → message.id
complaint.post_id            → datingpost.id

receipt.order_id             → ticketorder.id
receipt.customer_id          → customer.phone

funds.event_id               → event.id
funds.ticket_id              → ticket.id
funds.customer_id            → customer.phone

balance.organizer_id         → organizer.id
balance.customer_id          → customer.phone

balanceburner.customer_id    → customer.phone

booking.location_id          → location.id
booking.customer_id          → customer.phone

location.city_id             → city.id

teaser.city_id                → city.id

integration.organizer_id     → organizer.id

subscription.organizer_id    → organizer.id

systemorder.customer_id      → customer.phone

systemoperation.customer_id     → customer.phone
systemoperation.transaction_id  → customertransaction.id

transaction_organizer.event_id     → event.id
transaction_organizer.organizer_id → organizer.id

adminhistory.event_id        → event.id
adminhistory.ticket_id       → ticket.id
adminhistory.customer_id     → customer.phone
adminhistory.admin_id        → customer.phone

adminlog.operator_id         → customer.phone
adminlog.source_id           → ticket.id      (когда resource = 'ticket')
adminlog.source_id           → customer.phone (когда resource = 'customer')
adminlog.source_id           → promo.id       (когда resource = 'promo')
adminlog.source_id           → event.id       (когда resource = 'event')
adminlog.source_id           → push.id        (когда resource = 'push')
adminlog.source_id           → campaign.id    (когда resource = 'campaign')
adminlog.source_id           → organizer.id   (когда resource = 'organizer')
adminlog.source_id           → city.id        (когда resource = 'city')

схема analytics

Витрины на базе сырых данных из raw.

ВитринаТипОбновление
dim_transaction_typeтаблицавручную
dim_customerVIEWвсегда актуальна
dim_eventMV1 час, :00
fct_transactionsVIEWвсегда актуальна
fct_ticketsMV30 мин, :10 и :40
fct_customer_lifecycleMV1 час, :20
fct_resaleMV1 час, :30
check_unknown_typesMV1 день, 00:00
check_data_qualityMV1 час, :45
meta_martsтаблицавручную
fct_ordersMV30 мин, :15

dim_transaction_type

Справочник типов транзакций. Заполняется вручную — источника расшифровок в БД нет.

#ПолеТипОписаниеПример
1typeInt32Код типа транзакции70
2code_nameStringТехническое названиеredeem
3title_ruStringНазвание по-русскиПогашение билета
4categoryLowCardinality(String)Категорияticket_flow / refund / resale / bonus / withdrawal / legacy
5is_moneyUInt8Участвует в денежных метриках0 / 1
6directionLowCardinality(String)Направлениеin / out / neutral
7is_legacyUInt8Мёртвая функциональность0 / 1
8noteStringПояснениеПроход на мероприятие. Суммы = 0

Содержимое справочника:

Кодcode_nameНазваниеКатегорияis_moneydirectionis_legacy
4allocateВыпуск билетаticket_flow0neutral0
14subscriptionСписание за подпискуlegacy1out1
20sellПродажа билета на биржеresale1in0
30referralРеферальное начислениеbonus1in0
40withdrawalЗапрос на вывод средствwithdrawal1out0
45donateДонат артистуlegacy1out1
50refillНачисление средствbonus1in0
54burnСписание средствbonus1out0
60refundВозврат билетаrefund1in0
70redeemПогашение билетаticket_flow0neutral0
80transferПередача (дарение) билетаticket_flow0neutral0
90escrow_unlockВывод заблокированных средствwithdrawal1in0
92escrow_canceledОтмена блокировки средствwithdrawal1in0
100rewardВознаграждение за акцииbonus1in0
110relocateПересадка зрителяticket_flow0neutral0

is_money = 0 — суммы всегда нулевые, это движение билета, а не денег. Типы 40 (заявка на вывод) и 90 (фактическая выплата) складывать нельзя — двойной счет.


dim_customer

Профиль покупателя с разбором meta. VIEW поверх raw.customer, ~4.66 млн строк.

#ПолеТипОписаниеПример
1customer_idInt32id покупателя1537858
2phoneStringТелефон (ключ пользователя, уникален)+71234567890
3createdDateTime64Дата создания2024-09-15 16:30:27
4first_authorizedDateTime64Первая авторизация (основа когорт)2024-09-15 16:30:58
5last_authorizedDateTime64Последняя авторизация2026-08-01 10:15:54
6is_activeBoolАктивенtrue / false
7is_superBoolСуперпользовательtrue / false
8languageStringЯзыкru
9city_idStringid города524901
10genderStringПол—
11birthdayDateTime64День рождения—
12onboardingBoolПрошёл онбордингtrue / false
13bonus_agreementBoolСогласие на бонусыtrue / false
14notify_chatBoolОповещения из чатаtrue / false
15notify_adsBoolОповещения о рекламеtrue / false
16notify_awardBoolОповещения о наградахtrue / false
17notify_cashBoolОповещения о балансеtrue / false
18has_nicknameUInt8Заполнен никнейм0 / 1
19has_bioUInt8Заполнено описание профиля0 / 1
20has_avatarUInt8Загружен аватар0 / 1
21client_versionStringВерсия приложения из meta7.0.31
22osStringПлатформа из metaios / android
23os_versionStringВерсия ОС из meta26.6.2
24has_mts_idUInt8Привязан МТС ID0 / 1
25phone_changedUInt8Менял номер (meta.old_phone)0 / 1
26has_tbankUInt8Привязан Т-Банк0 / 1
27has_telegramUInt8Указан телеграм0 / 1
28has_vkUInt8Указан ВК0 / 1
29days_since_first_authInt64Дней с первой авторизации373
30days_since_last_authInt64Дней с последней авторизации52

client_version приходит строкой None у ~40 тыс. записей — в витрине приводится к пустой строке. os заполнен только у ~158 тыс. пользователей (3.4%), поле добавили недавно. last_ip и push-токены (FCM, APNS) в витрину не вынесены — персональные данные.


dim_event

Мероприятие с организатором, городом, площадкой и группой. MV, ~1.97 млн строк.

#ПолеТипОписаниеПример
1event_idInt32id мероприятия593172002
2external_idStringВнешний id (id мероприятия в Ядре)6ab14fbc169a1f3776609898
3event_nameStringНазваниеНевероятное мероприятие
4stateStringСтатусfinished / published / paused / canceled
5systemStringСистемаTC / TICKETLAND / TEST / MRS_CINEMA
6is_testUInt8Тестовое (система TEST или орг 1208)0 / 1
7startDateTime64Дата начала2026-09-21 19:00:00
8endDateTime64Дата завершения2026-09-21 23:00:00
9start_date_mskDateДата начала в MSK2026-09-21
10is_date_validUInt8Дата в диапазоне 2015–20300 / 1
11timezoneStringЧасовой поясEurope/Moscow
12currencyStringВалютаRUB / EUR / USD
13category_idStringid категории592841f8515e35002dead94c
14age_restrictionInt32Возрастное ограничение18
15organizer_idInt32id организатора1208
16organizer_nameNullable(String)Название организатораFunky Box
17city_idStringid города524901
18city_nameNullable(String)Название городаМосква
19country_codeNullable(String)Код страныRU
20location_idStringid локации10
21location_nameNullable(String)Название площадкиТеатр “Ленком”
22location_typeNullable(String)Тип локацииvenue / restaurant / cinema
23group_idInt32id группы мероприятий2
24group_nameNullable(String)Название группы (мета-мероприятия)—
25scan_modeInt32Код режима сканирования20
26scan_mode_nameStringРежим сканированияStatic QR
27is_refundableBoolВозврат денег за билетыtrue / false
28is_transferableBoolДоступна передача билетовtrue / false
29transfer_freeBoolБесплатная передачаtrue / false
30resale_readyBoolГотово к перепродажеtrue / false
31resale_freeBoolПерепродажа бесплатных билетовtrue / false
32min_resale_price_ppmInt32Минимальная цена перепродажи100000
33max_resale_price_ppmInt32Максимальная цена перепродажи500000
34org_commissionInt16Комиссия организатора50
35is_chat_availableBoolДоступен чат мероприятияtrue / false
36show_chat_participants_numberBoolПоказывать число участников чатаtrue / false
37feedBoolПоказывать в лентеtrue / false
38hidden_feedBoolСкрыто из лентыtrue / false
39hidden_dateBoolСкрытая датаtrue / false
40pushcardBoolПуш-карточкаtrue / false
41tickets_totalInt32Количество билетов500
42tickets_vacantInt32Свободных билетов123
43price_minInt32Минимальная цена (коп.)150000
44ratingInt32Рейтинг0
45createdDateTime64Дата создания2026-03-10 13:52:06
46updatedDateTime64Дата обновления2026-04-23 03:22:33

Джоин с location обязательно по external_id и system_ — иначе дубли: один location_id встречается в разных системах. is_test: система TEST — 4 654 события, организатор 1208 Funky Box — 18 397 событий. is_date_valid = 0 у 333 событий (в данных есть start от 1831 до 2233 года), из них 287 опубликованных.


fct_transactions

Транзакции покупателей с расшифровкой типа. VIEW, ~20 млн строк.

#ПолеТипОписаниеПример
1transaction_idInt32id транзакции6729959
2createdDateTime64Дата создания (UTC)2026-09-21 12:01:02
3dt_mskDateДата в MSK — для суточных разрезов2026-09-21
4customer_idStringТелефон покупателя+71234567890
5owner_idStringТелефон владельца+71234567890
6ticket_idInt32id билета4121350
7event_idInt32id мероприятия580773048
8type_codeInt32Код типа70
9code_nameStringТехническое название типаredeem
10title_ruStringНазвание типа по-русскиПогашение билета
11categoryStringКатегория типаticket_flow
12directionStringНаправлениеin / out / neutral
13is_moneyUInt8Денежная операция0 / 1
14is_legacyUInt8Легаси-тип0 / 1
15currencyStringВалютаRUB / BONUS_RUB / EUR / USD
16is_bonusUInt8Валюта = BONUS_RUB0 / 1
17amountUInt32Сумма в копейках (по модулю)150000
18amount_unitFloat64Сумма в рублях1500.0
19system_StringСистемаTC / PHANTOM / TEST
20has_blockchain_txUInt8Есть транзакция в блокчейне0 / 1
21external_idStringВнешний id—

Фильтр витрины: is_rejected = 0 AND is_pending = 0 AND hidden = 0 — отсекает ~23.5 тыс. записей (0.1%). Мусор концентрируется в денежных типах: у burn отсекается 27%, у withdrawal 14%, у allocate почти ничего. amount берется через abs() — знак задается типом операции; минусы есть только у легаси 14 и 45. Валюта обязательна в любой денежной группировке. RUB и BONUS_RUB лежат вместе: у refill 1.57 млн ₽ против 3.52 млн бонусов. INNER JOIN со справочником — транзакция с неизвестным кодом в витрину не попадет, расхождение ловит check_unknown_types.


fct_tickets

Билеты с атрибутами мероприятия, без тестовых. MV, ~12.77 млн строк.

#ПолеТипОписаниеПример
1ticket_idInt32id билета13070278
2createdDateTime64Дата создания (UTC)2026-09-21 15:40:26
3created_date_mskDateДата создания в MSK2026-09-21
4allocatedDateTime64Время аллокации2026-09-21 15:40:30
5customer_idStringТелефон покупателя+71234567890
6event_idInt32id мероприятия593172002
7order_idStringid заказа (systemorder.external_id)6ab14fbc169a1f3776609898
8external_idStringВнешний id билета5c648b63e977f90001015145
9barcodeStringШтрихкод15744945903598400
10statusStringСтатусactive / used / refunded / relocated
11is_status_validUInt8Статус из известного набора0 / 1
12is_smartBoolСмартбилетtrue / false
13is_blockedBoolЗаблокированtrue / false
14transferableBoolДоступна передачаtrue / false
15usesInt16Количество использований0
16hopsInt16Количество передач0
17was_transferredUInt8Передавался хотя бы раз0 / 1
18systemStringСистемаTC / TICKETLAND
19currencyStringВалютаRUB
20price_nominalInt32Номинальная цена (коп.)250000
21price_nominal_unitFloat64Номинальная цена (₽)2500.0
22sale_priceInt32Цена продажи300000
23price_lastInt32Последняя цена300000
24ticket_categoryStringКатегория билетаТанцевальный партер
25seat_rowStringРяд (из seat)2
26seat_numberStringМесто (из seat)21
27has_seatUInt8Есть рассадка0 / 1
28event_nameStringНазвание мероприятияНевероятное мероприятие
29event_startDateTime64Дата начала мероприятия2026-09-21 19:00:00
30event_start_date_mskDateДата начала в MSK2026-09-21
31event_stateStringСтатус мероприятияpublished
32organizer_idInt32id организатора570324049
33organizer_nameNullable(String)Название организатораTOP DOG
34city_idStringid города524901
35city_nameNullable(String)Название городаМосква
36event_category_idStringid категории мероприятия592841f8515e35002dead94c
37scan_mode_nameStringРежим сканированияStatic QR
38resale_readyBoolПерепродажа разрешенаtrue / false
39event_date_validUInt8Дата мероприятия валидна0 / 1

Смартбилетов 6.26 млн из 12.77 млн. Все билеты Ticketland — смарт. Рассадки нет у 8.05 млн билетов (63%). Внутри seat только ключи row и number. seat имеет тип Nullable(String) — для JSONExtract* нужен assumeNotNull.


fct_customer_lifecycle

Жизненный цикл покупателя: первые действия, статусы, когорты. MV, ~4.66 млн строк (по одной на пользователя).

#ПолеТипОписаниеПример
1customer_idInt32id покупателя1537858
2phoneStringТелефон+71234567890
3registered_atDateTime64Дата создания записи2024-09-15 16:30:27
4first_authorizedDateTime64Первая авторизация2024-09-15 16:30:58
5last_authorizedDateTime64Последняя авторизация2026-08-01 10:15:54
6city_idStringid города524901
7languageStringЯзыкru
8osStringПлатформаios / android
9client_versionStringВерсия приложения7.0.31
10is_activeBoolАктивенtrue / false
11onboardingBoolПрошёл онбордингtrue / false
12phone_changedUInt8Менял номер0 / 1
13has_mts_idUInt8Привязан МТС ID0 / 1
14first_alloc_atNullable(DateTime64)Первая покупка (транзакция allocate)2024-09-15 16:31:20
15last_alloc_atNullable(DateTime64)Последняя покупка2026-09-21 15:40:26
16allocs_totalUInt64Всего покупок за историю (тип 4)4
17refunds_totalUInt64Возвратов за историю (тип 60)1
18redeems_totalUInt64Погашений за историю (тип 70)2
19events_allocUInt64Уникальных мероприятий за историю3
20first_ticket_atNullable(DateTime64)Первый из билетов во владении сейчас2024-09-15 16:31:20
21last_ticket_atNullable(DateTime64)Последний из билетов во владении сейчас2026-09-21 15:40:26
22first_smart_atNullable(DateTime64)Первый смартбилет во владении2024-09-15 16:31:20
23tickets_currentUInt64Билетов во владении сейчас3
24tickets_smartUInt64Смартбилетов во владении2
25tickets_usedUInt64Погашенных билетов во владении2
26tickets_refundedUInt64Билетов со статусом refunded во владении0
27events_currentUInt64Мероприятий по билетам во владении2
28citiesUInt64Уникальных городов1
29organizersUInt64Уникальных организаторов2
30nominal_totalFloat64Сумма номиналов билетов во владении (₽)8400.0
31first_resale_atNullable(DateTime64)Первая операция на бирже—
32resale_cntUInt64Операций на бирже0
33first_withdrawal_atNullable(DateTime64)Первая операция вывода—
34withdrawal_cntUInt64Заявок на вывод (тип 40)0
35bonus_in_cntUInt64Бонусных начислений2
36bonus_in_sumFloat64Сумма начисленных бонусов (₽)300.0
37transfers_cntUInt64Передач билетов (тип 80)1
38last_transaction_atNullable(DateTime64)Последняя транзакция2026-09-21 15:40:30
39first_booking_atNullable(DateTime64)Первое бронирование ресторана—
40bookings_cntUInt64Бронирований0
41first_message_atNullable(DateTime64)Первое сообщение в чате—
42messages_cntUInt64Сообщений в чатах0
43is_buyerUInt8Покупал когда-либо (по allocate)0 / 1
44holds_ticketsUInt8Держит билеты сейчас0 / 1
45is_smart_userUInt8Имеет смартбилет0 / 1
46has_refundsUInt8Делал возвраты0 / 1
47is_resellerUInt8Пользовался биржей0 / 1
48is_restaurant_userUInt8Бронировал рестораны0 / 1
49is_chatterUInt8Писал в чаты0 / 1
50ttfp_daysNullable(Int64)Дней от авторизации до первой покупки0
51purchase_span_daysNullable(Int64)Дней между первой и последней покупкой736
52days_since_activityNullable(Int64)Дней с последней активности1
53statusStringСтатус пользователяno_purchase / active / sleeping / churn
54cohort_dateDateДата когорты (первая авторизация, MSK)2024-09-15
55cohort_monthDateМесяц когорты2024-09-01

Два набора полей. История покупок (allocs_total, first_alloc_at, events_alloc, refunds_total, redeems_total) считается по транзакциям allocate / refund / redeem — она не перезаписывается. Текущее владение (tickets_current, events_current, nominal_total, tickets_smart) — по fct_tickets, где customer_id меняется при возврате и перевыпуске билета. Цены и категории есть только во втором наборе. is_buyer, ttfp_days, purchase_span_days, days_since_activity и status считаются от истории покупок. Если считать их по билетам, из базы выпадает 114 тыс. покупателей, вернувших всё купленное. Статусы: no_purchase — не покупал никогда (304 806); active — активность ≤ 90 дней (928 812); sleeping — ≤ 365 дней (1 499 290); churn — больше года (1 931 935). Пороги 90 / 365 выбраны под B2C-ритм, требуют согласования с продуктом. Покупали, но билетов сейчас не держат — 146 266 человек (is_buyer AND NOT holds_tickets): всё вернули или передали. Возвраты делают ~6% покупателей, и доля одинакова во всех статусах (churn 5.5%, sleeping 6.8%, active 6.6%) — возврат не предсказывает уход. 253 человека имеют возвраты без покупок — вероятно, получили билет передачей (тип 80) и вернули. is_buyer по allocate получателей подарков не покрывает. Все даты первых действий обёрнуты в if(<счётчик> > 0, <дата>, NULL): minIf и LEFT JOIN без совпадения дают нулевую дату 1970 года. first_withdrawal_at привязан к счётчику по всей категории withdrawal, а не только к типу 40.


fct_resale

Биржа перепродажи: заказы, комиссии, наценка к номиналу. MV, ~62.8 тыс. строк.

#ПолеТипОписаниеПример
1resale_order_idInt32id заказа перепродажи63260
2createdDateTime64Дата создания (UTC)2026-09-22 00:10:14
3created_date_mskDateДата создания в MSK2026-09-22
4updatedDateTime64Дата обновления2026-09-22 00:11:02
5buyer_idStringТелефон покупателя+71234567890
6seller_idStringТелефон продавца+71234567890
7referral_idStringТелефон реферала—
8has_referralUInt8Есть реферал0 / 1
9ticket_idInt32id билета398302
10payment_sourceStringИсточник оплатыtinkoff / qiwi / balance / cloudpayments
11currencyStringВалютаRUB / BONUS_RUB
12paid_with_bonusUInt8Оплата бонусами0 / 1
13paid_from_balanceUInt8Оплата с внутреннего баланса0 / 1
14is_paidBoolОплаченtrue / false
15is_succeededBoolУспешноtrue / false
16is_finishedBoolЗавершёнtrue / false
17is_refundedBoolВозвращёнtrue / false
18is_firstBoolПервая покупка / перепродажаtrue / false
19total_priceInt32Стоимость (коп.)660000
20total_price_unitFloat64Стоимость (₽)6600.0
21price_last_unitFloat64Последняя цена (₽)6600.0
22org_fee_unitFloat64Комиссия организатора (₽)600.0
23sys_fee_unitFloat64Комиссия системы (₽)300.0
24ref_fee_unitFloat64Комиссия реферала (₽)0.0
25acquiring_fee_unitFloat64Комиссия эквайринга (₽)180.0
26fees_total_unitFloat64Сумма всех комиссий (₽)1080.0
27transaction_idInt32id транзакции1208208
28nominal_unitFloat64Номинал билета (₽)3000.0
29price_to_nominalNullable(Float64)Цена / номинал2.2
30above_nominalUInt8Дороже номинала0 / 1
31is_smartBoolСмартбилетtrue / false
32hopsInt16Количество передач билета1
33ticket_statusStringСтатус билетаactive
34ticket_categoryStringКатегория билетаТанцевальный партер
35event_idInt32id мероприятия593172002
36event_nameStringНазвание мероприятияТурнир TOP DOG 43
37event_startDateTime64Дата начала мероприятия2026-10-05 19:00:00
38event_stateStringСтатус мероприятияpublished
39organizer_idInt32id организатора570324049
40organizer_nameNullable(String)ОрганизаторTOP DOG
41city_idStringid города524901
42city_nameNullable(String)ГородМосква
43event_category_idStringid категории мероприятия592841f8515e35002dead94c
44event_resale_readyBoolПерепродажа разрешена на мероприятииtrue / false
45days_before_eventNullable(Int64)Дней от покупки до мероприятия13

check_unknown_types

Коды транзакций без расшифровки в справочнике. MV, обновление раз в сутки. В норме пустая.

#ПолеТипОписаниеПример
1type_codeInt32Код, которого нет в справочнике120
2cntUInt64Количество записей178
3first_seenDateTime64Когда код появился впервые2026-09-01 10:00:00
4last_seenDateTime64Последнее появление2026-09-22 12:00:00
5customersUInt64Затронуто покупателей42
6currenciesArray(String)В каких валютах встречается[‘RUB’]

check_data_quality

Проверки качества данных. MV, обновление раз в час. Смотреть: WHERE is_alert = 1.

#ПолеТипОписаниеПример
1check_nameStringНазвание проверкиreplication_lag_customer
2metricInt64Фактическое значение287
3thresholdInt64Порог100
4is_alertUInt8Порог превышен0 / 1
5checked_atDateTimeВремя проверки2026-09-22 15:45:00

Состав проверок:

ПроверкаПорогЧто ловит
replication_lag_customer30Лаг репликации customer, мин
replication_lag_ticket30Лаг репликации ticket, мин
replication_lag_transaction30Лаг репликации customertransaction, мин
unknown_transaction_types0Коды транзакций без расшифровки
events_invalid_dates100Опубликованные события с битой датой
tickets_invalid_status10Билеты с неизвестным статусом
orders_vibe_without_tickets12000Заказы origin = vibe без билетов
resale_bonus_unpaid_7d50Неоплаченные бонусные заказы на бирже
resale_conversion_drop_pct0Насколько конверсия биржи ниже 80%
resale_above_2x_nominal_30d20Перепродажи дороже 2 номиналов
customers_duplicate_phones0Дубли телефонов в customer
lifecycle_zero_dates0Нулевые даты 1970 года в lifecycle

Типы metric и threshold приведены к Int64 через toInt64 — иначе UNION ALL даёт тип Variant, который не читает JDBC-драйвер DBeaver. Пороги выставлены по текущим значениям с запасом: витрина ловит ухудшение, а не известные проблемы. По мере закрытия проблем пороги опускать.


meta_marts

Когда какая витрина обновлялась. Заполняется вручную при создании и пересоздании витрин.

#ПолеТипОписаниеПример
1mart_nameStringИмя витриныfct_tickets
2updated_atDateTime(‘Europe/Moscow’)Время обновления (MSK)2026-09-22 18:45:00
3rows_countUInt64Количество строк12773115
4refresh_typeLowCardinality(String)Способ обновленияview / refresh_30m / refresh_1h / manual
5noteStringПояснениеБилеты с атрибутами мероприятия

fct_orders

Заказы из Ядра: GMV, средний чек, состав билетов. MV, ~12.69 млн строк.

#ПолеТипОписаниеПример
1order_idStringid заказа (systemorder.external_id)6ab14df46dc3491b2b69a570
2order_numberStringНомер заказа124584308
3systemStringСистемаTC / TICKETLAND
4originStringГде оформлен заказtc / tl / vibe
5is_vibe_orderUInt8Оформлен в приложении0 / 1
6replicated_atDateTime64Время записи в реплику (не дата заказа)2026-09-21 15:33:23
7done_atDateTime64Дата оплаты (UTC)2026-09-21 15:33:14
8done_date_mskDateДата оплаты в MSK2026-09-21
9done_month_mskDateМесяц оплаты в MSK2026-09-01
10customer_idStringТелефон покупателя+71234567890
11amountInt64Сумма заказа (коп.)253000
12amount_unitFloat64Сумма заказа (₽)2530.0
13bonus_amountInt64Оплачено бонусами (коп.)0
14bonus_amount_unitFloat64Оплачено бонусами (₽)0.0
15is_freeUInt8Бесплатный заказ (сумма = 0)0 / 1
16used_bonusUInt8Использованы бонусы0 / 1
17tickets_countUInt64Билетов в заказе сейчас2
18tickets_smartUInt64Смартбилетов в заказе2
19tickets_usedUInt64Погашенных билетов1
20tickets_refundedUInt64Билетов со статусом refunded0
21has_ticketsUInt8Есть билеты по order_id0 / 1
22has_smart_ticketsUInt8Есть смартбилеты (заказ виден в Вайбе)0 / 1
23nominal_sum_unitFloat64Сумма номиналов билетов (₽)2500.0
24amount_per_ticket_unitNullable(Float64)Сумма заказа на билет (₽)1265.0
25events_in_orderUInt64Уникальных мероприятий в заказе1
26event_idInt32id мероприятия (любое из заказа)593164183
27event_nameStringНазвание мероприятияHorus в Санкт-Петербурге
28event_startDateTime64Дата начала мероприятия2026-11-28 20:00:00
29organizer_idInt32id организатора570324049
30organizer_nameNullable(String)ОрганизаторTOP DOG
31city_idStringid города524901
32city_nameNullable(String)ГородМосква
33event_category_idStringid категории мероприятия592841f8515e35002dead94c
34days_before_eventNullable(Int64)Дней от оплаты до мероприятия68

origin — это разрез, а не фильтр. Он говорит, где оформлен заказ, а не относится ли он к Вайбу. Смартбилет можно купить из любого виджета Ticketscloud, поэтому 1.7 млн заказов origin = tc содержат смартбилеты и видны в приложении, а заказов origin = vibe всего 75 336. Фильтр по origin = 'vibe' теряет 97% смартбилетов.


Зависимости между витринами

dim_transaction_type    → fct_transactions

dim_customer            → fct_customer_lifecycle

dim_event               → fct_tickets

fct_tickets             → fct_customer_lifecycle
fct_tickets             → fct_resale
fct_transactions        → fct_customer_lifecycle

check_unknown_types     → check_data_quality
dim_event               → check_data_quality
fct_tickets             → check_data_quality
fct_resale              → check_data_quality
fct_customer_lifecycle  → check_data_quality

fct_tickets             → fct_orders

Управление:

-- состояние планировщика
SELECT view, status, last_success_time, next_refresh_time, exception FROM system.view_refreshes;
 
-- ручной пересчёт
SYSTEM REFRESH VIEW analytics.fct_tickets;
 
-- смена периода
ALTER TABLE analytics.fct_tickets MODIFY REFRESH EVERY 30 MINUTE OFFSET 10 MINUTE;
 
-- пауза и возобновление
SYSTEM STOP VIEW analytics.fct_tickets;
SYSTEM START VIEW analytics.fct_tickets;