Yandex Data Factory и Intel изменяют привычные способы использования больших данных.

(YDF), B2B-проект по работе с большими данными компании Яндекс, сегодня объявили о стратегическом сотрудничестве. Новая инициатива объединит уникальные методы анализа больших данных YDF и ведущую архитектуру для центров обработки данных (ЦОД) на базе технологии Intel Xeon. Стратегическая задача партнерства заключается в том, чтобы ускорить внедрение решений для больших данных среди заказчиков. Это позволит компаниям всех масштабов легко и просто получить коммерческую выгоду от данных, обработанных YDF.

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

Предполагается, что сотрудничество с YDF поддержит технологии Intel для ЦОД и Интернета вещей, так как заказчики смогут управлять и анализировать данные, полученные из различных источников, начиная с датчиков, сенсоров и шлюзов и заканчивая цифровыми устройствами.

За счет объединения стратегии YDF и Intel в области разработки центров обработки данных мы создаем наиболее эффективное решение для анализа больших данных, – сказал Дмитрий Конаш, региональный директор Intel в России и странах СНГ. – Мы надеемся на ускорение темпов внедрения технологий больших данных в отрасли для того, чтобы компании могли получить дополнительные преимущества от анализа имеющихся у них данных и преобразовать традиционные бизнес-процессы. Это сотрудничество включает наши технологии для центров обработки данных, начиная с решений для компьютерных вычислений и сетей и заканчивая системами хранения данных и обеспечения безопасности, а также наши инициативы в области Интернета вещей.

Обе компании используют решения для больших данных, которые поддерживают развитие аппаратного и программного обеспечения. YDF и Intel будут реализовывать совместные стратегии по выводу на рынок, включая специальные программы для заказчиков.

Анализ больших данных для принятия бизнес-решений – относительно новое, но очень быстро развивающееся направление информационных технологий, способное вывести практически любую отрасль экономики на новый уровень, – подчеркнула Евгения Завалишина, руководитель Yandex Data Factory. – Мы рады сотрудничеству с Intel на этом этапе, когда направление только зарождается, и будем вместе продвигать преимущества концепции больших данных для корпоративных пользователей.

Yandex Data Factory стала компанией, выбранной Сбербанком для «анализа супермассивов данных». Александр Хайтин, руководитель проектного офиса YDF, рассказал FutureBanking, как именно банк может применять технологии big data, перейдя от абстрактных разговоров к делу.

Два-три года назад big data была очень громкой темой. Каждый банк считал своей обязанностью упомянуть о ней. Теперь все стихло. Есть ощущение, что банки разочаровались в технологии. Так ли это?
На самом деле, они просто перестали произносить этот термин. Но если заглянуть «внутрь» банков — у многих появился Hadoop. Сейчас уже говорят про применение технологий, а не просто абстрактно рассуждают об их теоретической полезности. К примеру, персональные рекомендации для компании, у которой более 100 000 клиентов — это big data по определению. Просто в силу масштаба вовлечённых данных.

То есть первое применение big data — это up- и cross-sale? Но в этой области давно работают классические CRM-системы…
Для применения big data нужны всего два условия: во-первых, данные доступны, а во-вторых, текущие средства уже использованы. Например, компания уже наладила канал, разослала всем SMS, и люди на них откликаются. Процесс выстроен и он экономически эффективен, а мы хотим еще сколько-то процентов отклика. При этом емкость канала ограничена — мы не можем отправить человеку 100 сообщений, он просто не будет на них реагировать. Понятно, что результат может быть достигнут только за счет более точного предложения. Допустим, мы понимаем, что женщинам пенсионного возраста надо предлагать депозит, а мужчинам после вуза — кредит. Эти правила настроены, и они работают. Но правда в том, что не всем таким женщинам нужно предлагать депозит, а мужчинам — кредит. И за счет big data и machine learning мы можем понять, кому именно из них эти продукты нужны, и таким образом добавить те самые несколько процентов отклика. В нашем эксперименте для одного из банков на довольно большой выборке клиентов удалось увеличить эффект от рассылки рекомендаций на 13%.

В своей лекции один data scientist из Cloudera говорит, что ненавидит, когда ему говорят: «Вот тебе данные, найди в них что-нибудь». Он может работать только когда ему четко ставят задачу. Но банки не всегда понимают, что вообще можно сделать на базе имеющихся у них данных и не могут поставить задачу.
Надо просто понять, что нужно банку. Если он хочет повысить продажи, надо, не стесняясь, так и сказать. Однако если банк хочет увеличить продажи вообще — это слишком общая задача. А увеличить продажи за счет активной коммуникации с клиентами — уже более понятная задача. За счет уточнения предложения мы можем ожидать роста продаж.

Какие именно данные банк может для этого задействовать?
Самый сильный сигнал — признак, который мы можем использовать для предсказания готовности что-либо купить и так далее находится в данных, которые образуются из взаимодействия клиента и банка. И здесь мы в первую очередь смотрим историю использования сервиса — брал ли клиент кредит, имеет ли он банковскую карту, какие счета он открывал — все события. Вторая часть — это история коммуникаций — что ему предлагали, какие предложения он принял и от каких отказался. И третья часть — социально-демографический профиль.

Сколько полей используется в таком анализе?
Чем больше полей, тем лучше, даже нелинейно. Десятки и сотни. Только в соцдем-профиль входит 10-15 полей. При этом важно, что такие проекты можно делать на деперсонализированных данных. Нет необходимости знать конкретного человека, его ФИО и телефон. Важно знать только его уникальность. Дальше истории коммуникации, это уже не поля — это записи. Таких записей, если коммуникация была, скажем, раз в месяц, 12 в год. Так в сумме и набираются сотни. Это данные из транзакционных систем, CRM-систем и других. Все вместе они, помноженные на количество клиентов, и образуют big data.

Вы, как часть «Яндекса», можете дополнить эти данные какой-то информацией из интернета?
Это не совсем верное предположение. Во-первых, как я уже говорил, самый сильный сигнал находится в истории взаимодействии клиента с банком. А то, что пишет человек в соцсетях, с котиками и песиками — это существенно более разреженная информация. Во-вторых, задача сопоставления клиента банка и профиля в соцсети достаточно сложна. Никто ведь не обязан в соцсетях писать свое ФИО, даже если не брать в расчет однофамильцев.

Но в общем понимании big data нужна как раз для того, чтобы научиться давать ответы по широкому набору разнообразных данных.
В том-то и проблема big data, что в ожидание результата подмешивается ожидание механизма. Клиент думает, что мы посмотрим в хрустальный шар, и скажем, кому предложить кредит или депозит. Но такого не бывает. Нужны определенные данные.

У «Яндекса» нет хрустального шара?
Нет, мы даже его производить не пробуем. Большие данные — это математика. У нас есть примеры, как ведут себя люди. Мы находим в них паттерны или общие повторяющиеся закономерности — и выделяем незавершенные. Мы видим, что человек сделал шаги А, Б, В и взял кредит. А потом мы находим тех, кто сделал шаги А и Б, а В еще нет. Значит, настал момент, когда ему можно сделать предложение. Это достаточно формальный математический процесс. И при этом, что важно, мы можем дать хорошее предсказание, но при этом не понимать, почему оно именно такое. Big data — это черный ящик, который работает с измеримым качеством.

То есть хотите верьте, хотите нет?
Нет, это плохая идея. Нужно все замерять. Всегда должно быть две группы — одна контрольная, вторая — рабочая. И сравнивайте, дает ли технология эффект и положителен ли он. Тогда не нужно принимать решения на основе убеждения или веры в технологию. Отчет за неделю покажет разницу в продажах по контрольной группе и остальным. Причем одну неделю может быть прирост в 5%, в следующую — 6%, а еще через неделю продажи упадут на 2%. Значит, надо что-то менять.

Но скептики могут сказать, что на основе big data можно сделать вывод, что люди в зеленых штанах и с большими ушами покупают лучше, но по факту это будет полный бред.
Правильно. Именно поэтому мы и измеряем эффект. Измеримый эффект не всегда сопровождается детальным пониманием механизма. Например, фармакология так устроена — проводится эксперимент, доказывающий, что на большой группе людей лекарство работает. А дальше люди принимают медикаменты, не понимая, что происходит у них в организме.

В каких еще бизнес-процессах банку могут быть прописаны лекарства от big data?
Их довольно много. Например, лояльность. Это задача более широкая, чем cross- и up-sale. Но и тут можно вместо того, чтобы заваливать всех подарками, выбрать тех, на кого они действительно подействуют. К примеру, сделать скидку в 2% всем — это довольно слабый мотиватор. При этом дать 10% невозможно, потому что тогда компания потеряет слишком много денег. Но если сфокусироваться только на тех, кто, во-первых, теряет лояльность, а во-вторых, способен заинтересоваться — можно предложить и 10%. Например, в одном из наших проектов модель, построенная с помощью big data предсказывает вероятность того, что клиент уйдет, на 20% точнее, чем используемая раньше модель. Теперь надо сфокусировать на выбранных клиентах меры удержания. На то, чтобы оценить конечный эффект требуется время — сейчас идет практическое тестирование, которое еще не закончено.

Вопрос тогда в том, как измерить эффективность big data, и не стремится ли она к нулю?
Во-первых, если это сервис, то его экономическая эффективность может быть заложена в SLA —соглашении об уровне сервиса. Обязательно должно быть увеличение продаж по отношению к контрольной группе. Это не капитальные затраты, а операционные: нет продаж — нет денег. Но понятно, что со временем модель деградирует, хотя в случае с big data, поскольку данных больше, ухудшение происходит медленнее, чем при простой экстраполяции. Поэтому в сервис нужно закладывать переучивание модели. Обычно делается раз в квартал. Точно такой же принцип используется «Яндексом» в поиске — идет постоянное совершенствование алгоритмов, хоть оно и незаметно для людей.

А в скоринге и борьбе с фродом большие данные используются?
Тут проблема в том, что банки не очень хотят делиться своими внутренними данными. То же самое и с фродом — банки предпочитают бороться с ним сами. При готовности клиента технологии машинного обучения могут использоваться и в таких сценариях тоже — главное, чтобы было достаточное количество данных для анализа.

Можете привести примеры каких-то нестандартных задач для big data?
Да. К примеру, как сделать так, чтобы клиент не звонил в контакт-центр. Допустим, он подходит к банкомату, и у него возникает какой-то вопрос. Надо тут же дать ему ответ. Если в банкомате нет купюр — подсказать, где рядом другой банкомат и так далее. Роль машинного обучения — на основе анализа исторических данных, в каких ситуациях и зачем люди звонят в колл-центр —предугадать само намерение позвонить.

А когда, по-вашему, будет создан искусственный интеллект?
Суть в том, что стандартный тест Тьюринга пройден, и машины уже давно применяются для решения отдельных интеллектуальных задач — в шахматы играют и не только. Но пока нет никаких оснований предполагать, когда и как искусственный интеллект в общем смысле этого слова будет создан. С практической точки зрения важно именно решение отдельных интеллектуальных задач.

The advantages of using LiveData

Using LiveData provides the following advantages:

Ensures your UI matches your data state LiveData follows the observer pattern. LiveData notifies Observer objects when the lifecycle state changes. You can consolidate your code to update the UI in these Observer objects. Instead of updating the UI every time the app data changes, your observer can update the UI every time there"s a change. No memory leaks Observers are bound to Lifecycle objects and clean up after themselves when their associated lifecycle is destroyed. No crashes due to stopped activities If the observer"s lifecycle is inactive, such as in the case of an activity in the back stack, then it doesn’t receive any LiveData events. No more manual lifecycle handling UI components just observe relevant data and don’t stop or resume observation. LiveData automatically manages all of this since it’s aware of the relevant lifecycle status changes while observing. Always up to date data If a lifecycle becomes inactive, it receives the latest data upon becoming active again. For example, an activity that was in the background receives the latest data right after it returns to the foreground. Proper configuration changes If an activity or fragment is recreated due to a configuration change, like device rotation, it immediately receives the latest available data. Sharing resources You can extend a LiveData object using the singleton pattern to wrap system services so that they can be shared in your app. The LiveData object connects to the system service once, and then any observer that needs the resource can just watch the LiveData object. For more information, see .

Work with LiveData objects

  1. Create an instance of LiveData to hold a certain type of data. This is usually done within your ViewModel class.
  2. Create an Observer object that defines the onChanged() method, which controls what happens when the LiveData object"s held data changes. You usually create an Observer object in a UI controller, such as an activity or fragment.
  3. Attach the Observer object to the LiveData object using the observe() method. The observe() method takes a LifecycleOwner object. This subscribes the Observer object to the LiveData object so that it is notified of changes. You usually attach the Observer object in a UI controller, such as an activity or fragment.

    Note: You can register an observer without an associated LifecycleOwner object using the observeForever(Observer) method. In this case, the observer is considered to be always active and is therefore always notified about modifications. You can remove these observers calling the removeObserver(Observer) method.

When you update the value stored in the LiveData object, it triggers all registered observers as long as the attached LifecycleOwner is in the active state.

LiveData allows UI controller observers to subscribe to updates. When the data held by the LiveData object changes, the UI automatically updates in response.

Create LiveData objects

LiveData is a wrapper that can be used with any data, including objects that implement Collections , such as List . A LiveData object is usually stored within a ViewModel object and is accessed via a getter method, as demonstrated in the following example:

Kotlin

class NameViewModel: ViewModel() { // Create a LiveData with a String val currentName: MutableLiveData by lazy { MutableLiveData() } // Rest of the ViewModel... }

Java

public class NameViewModel extends ViewModel { // Create a LiveData with a String private MutableLiveData currentName; public MutableLiveData getCurrentName() { if (currentName == null) { currentName = new MutableLiveData(); } return currentName; } // Rest of the ViewModel... }

Initially, the data in a LiveData object is not set.

Note: Make sure to store LiveData objects that update the UI in ViewModel objects, as opposed to an activity or fragment, for the following reasons:
  • To avoid bloated activities and fragments. Now these UI controllers are responsible for displaying data but not holding data state.
  • To decouple LiveData instances from specific activity or fragment instances and allow LiveData objects to survive configuration changes.

You can read more about the benefits and usage of the ViewModel class in the ViewModel guide .

Observe LiveData objects

Use coroutines with LiveData

LiveData includes support for Kotlin coroutines. For more information, see Use Kotlin coroutines with Android Architecture Components .

Extend LiveData

LiveData considers an observer to be in an active state if the observer"s lifecycle is in either the STARTED or RESUMED states The following sample code illustrates how to extend the LiveData class:

Kotlin

class StockLiveData(symbol: String) : LiveData() { private val stockManager = StockManager(symbol) private val listener = { price: BigDecimal -> value = price } override fun onActive() { stockManager.requestPriceUpdates(listener) } override fun onInactive() { stockManager.removeUpdates(listener) } }

Java

public class StockLiveData extends LiveData { private StockManager stockManager; private SimplePriceListener listener = new SimplePriceListener() { @Override public void onPriceChanged(BigDecimal price) { setValue(price); } }; public StockLiveData(String symbol) { stockManager = new StockManager(symbol); } @Override protected void onActive() { stockManager.requestPriceUpdates(listener); } @Override protected void onInactive() { stockManager.removeUpdates(listener); } }

The implementation of the price listener in this example includes the following important methods:

  • The onActive() method is called when the LiveData object has an active observer. This means you need to start observing the stock price updates from this method.
  • The onInactive() method is called when the LiveData object doesn"t have any active observers. Since no observers are listening, there is no reason to stay connected to the StockManager service.
  • The setValue(T) method updates the value of the LiveData instance and notifies any active observers about the change.

You can use the StockLiveData class as follows:

Kotlin

override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) val myPriceListener: LiveData = ... myPriceListener.observe(this, Observer { price: BigDecimal? -> // Update the UI. }) }

Java

public class MyFragment extends Fragment { @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); LiveData myPriceListener = ...; myPriceListener.observe(this, price -> { // Update the UI. }); } }
  • Big Data
  • Только что в Париже на конференции LeWeb Яндекс объявил об открытии нового важного направления своей деятельности - по коммерческой обработке больших данных - Yandex Data Factory .

    Мы верим, что обработка больших данных - это часть нового витка технической революции, который сделает всё человечество ещё более эффективным и приведёт нас к будущему, которое мы сейчас ещё даже не можем до конца представить. И в нём работа с большими объёмами данных будет не менее важной и распространённой, чем выработка электричества или железные дороги сегодня.

    Перед публичным запуском Yandex Data Factory мы провели несколько пилотных проектов с компаниями-партнёрами. Для компании, обслуживающей линии электропередач, в Yandex Data Factory создали систему, которая анализирует сделанные беспилотниками снимки и автоматически выявляет угрозы: например, деревья, растущие слишком близко к проводам. А для автодорожного агентства проанализировали данные о загруженности дорог, качестве покрытия, средней скорости движения транспорта и аварийности. Это позволило в режиме реального времени составлять прогноз заторов на дорогах на ближайший час и выявлять участки с высокой вероятностью ДТП.

    Кажется, каждый раз, когда человечество учится экономить где-нибудь 10%, происходит индустриальная революция. 200 лет назад стали использовать паровую машину. Сто лет назад благодаря развитию химии появились новые искусственные материалы. Электроника в XX веке изменила не только производство, но и быт. Когда люди поняли, что обрабатывать материалы дешевле в Китае и Юго-Восточной Азии, все промышленное производство мира переехало туда. На самом деле, 10% экономии - это мировые сдвиги. Анализ данных может помочь мировому производству и экономике стать более эффективными.

    Интернет - не единственное место, где есть большие данные. Исторически еще в 60-70-х прошлого века их генерировали геологи. Они наблюдали за тем, как отражаются волны от взрывов на поверхности - это был их способ посмотреть под землю. В геологоразведке есть, что анализировать. И два года назад мы предоставили свои технологии параллельных вычислений и оборудование для обработки геолого-геофизических данных. Алгоритмы стали новым способом посмотреть под землю.

    Многие из нас думают, что Wi-Fi в самолетах нужен для того, чтобы мы могли пользоваться своими устройствами во время полетов. Но изначально интернет в них появлялся, потому что современный самолёт - это тысячи датчиков, которые все время своего полёта измеряют огромное количество показателей и генерируют данные. Их часть передаётся на землю еще до посадки, а после неё из самолёта извлекают терабайтный диск и сохраняют его, не зная, что делать со всем, что на нём записано.

    Но если посмотреть даже на те данные, которые передаются во время полёта, можно заранее предсказать, какие запчасти, например, нужно заменить в самолёте. Это сэкономит и время пассажиров, и ресурсы авиастроения, которое теряет 10% на простоях из-за запчастей. Сам Яндекс - это буквально улицы из серверов, которые потребляют 120 МВт мощности. И даже когда у вас сотни тысяч серверов, одновременно всегда в любую секунду не работает несколько сот дисков. Машина может предсказать, какой диск следующим выйдет из строя, и подскажет, что его надо поменять.

    Яндекс - одна из немногих компаний мира, обладающих нужными для этого технологиями и экспертизой. Поиск в интернете невозможен без машинного обучения и умения анализировать данные. Сейчас они стоят практически за всем в Яндексе - прогнозом пробок, статистическим переводом, распознаванием речи и изображений. Большое влияние на становление этого оказала советская научная школа. Впоследствии мы создали Школу анализа данных, чтобы готовить специалистов, которые умеют работать с данными. В Высшей школе экономики при нашем участии появился факультет компьютерных наук, где в том числе есть департамент анализа данных и искусственного интеллекта.

    Матрикснет - наша технология машинного обучения изначально создавалась, чтобы решать задачи ранжирования в поиске. Сейчас её используют ученые в ЦЕРНе. Один из проектов связан с построением системы отбора данных о столкновениях частиц в коллайдере в реальном времени. Это точный и гибкий фильтр, основанный на Матрикснете, который позволяет учёным очень быстро получать в распоряжение только интересные и важные данные о столкновениях частиц в БАК, чтобы использовать их в научных работах. Иногда это сверхредкие данные, встречающиеся, например, в 100 тысячах случаях на 100 миллиардов. Больше половины всех научных статей LHCb основаны как раз на данных, отфильтрованных нашим алгоритмом на базе Матрикснета.

    Второй наш проект с ЦЕРНом - оптимизация хранилища данных. За два года работы БАК сгенерировал петабайты данных, которые хранятся на жестких дисках, чтобы у учёных был к ним оперативный доступ. Но место на HDD уже заканчивается, и какую-то часть данных нужно переносить на ленточные накопители. Это более дешевый способ хранения, но и менее гибкий - не так просто искать данные на ленте. Надо понять, какую именно часть файлов переносить, а какую - оставить на жестких дисках. Мы предложили ЦЕРНу помочь проранжировать тысячи накопленных файлов об экспериментах и выделить данные, которые необходимо оставить на HDD. Таким образом, мы поможем высвободить несколько петабайтов на HDD, а это десятки процентов.

    Количество данных растет очень быстрыми темпами. Каждый из нас носит огромный источник данных в кармане - телефон. Датчики становятся всё дешевле, данных на сервера отправляется все больше, и встаёт вопрос, что с ними делать. Нам кажется, что если мы научимся их использовать и как-то с ними работать, то есть шансы сэкономить мировой экономике 10% ресурсов. И, если это случится, нас ждёт новая индустриальная революция.

    Теги:

    • ydf
    • яндекс
    • большие данные
    • машинное обучение
    • матрикснет
    Добавить метки

    Комментарии 32

    Returns statistics for the specified campaigns for each day of the specified period.

    Attention.

    This method is outdated and will soon be disabled. Use version 5 of the API.

    For information about the compatibility of methods between versions Live 4 and 5, see the Migration guide .

    Restrictions

    Up to 100 method calls per day for a single campaign.

    The number of requested campaigns multiplied by the number of days in the selected period must not exceed 1000.

    Statistics are available for the three years prior to the current month. For example: on September 15, 2016, you can get data starting from September 1, 2013.

    All campaigns specified in the same method call must be in the same currency.

    New in the Live 4 version

    The \n

    Acceptable values:

    RequiredFor campaigns in a real currency"}}">Currency input parameter is required for campaigns that use a real currency.

    Added the input parameters \n

    The currency to use for amounts in the response.

    Acceptable values: RUB, CHF, EUR, KZT, TRY, UAH, USD, BYN . The value must match the campaign currency; otherwise, an error is returned with code .

    For campaigns in units, either omit the parameter or pass NULL.

    RequiredFor campaigns in a real currency"}}">Currency , \n

    \nRequiredNo"}}">IncludeVAT

    , and \n

    \nRequiredNo"}}">IncludeDiscount

    .

    Input data

    The input data structure in JSON is shown below.

    { "method": "GetSummaryStat", "param": { /* GetSummaryStatRequest */ "\n

    \nRequiredYes"}}">CampaignIDS

    ": [ (int) ... ], "The start date of the report period that statistics are being returned for (YYYY-MM-DD).RequiredYes"}}">StartDate ": (date), "The end date of the report period that statistics are being returned for (YYYY-MM-DD).RequiredYes"}}">EndDate ": (date), "\n

    The currency to use for amounts in the response.

    Acceptable values: RUB, CHF, EUR, KZT, TRY, UAH, USD, BYN . The value must match the campaign currency; otherwise, an error is returned with code .

    For campaigns in units, either omit the parameter or pass NULL.

    \nRequiredFor campaigns in a real currency"}}">Currency

    ": (string), "\n

    Calculate VAT for the cost of clicks in a currency - Yes/No. When the value is Yes, amounts shown in the response will include VAT. If omitted, Yes is assumed.

    If the Currency parameter is omitted, the IncludeVAT parameter is ignored.

    \nRequiredNo"}}">IncludeVAT

    ": (string), "\n

    Calculate the discount for the cost of clicks in a currency - Yes/No.

    When the value is Yes, the report will show amounts that include the discount (in other words, the amounts that are actually deducted from the campaign balance). When the value is No, the report will show amounts before the discount is applied. If omitted, Yes is assumed.

    Note. For campaigns that operate in a currency, the discount is applied when the cost per click is deducted.

    If the Currency parameter is omitted, the \"No\" value is assumed.

    \nRequiredNo"}}">IncludeDiscount

    ": (string) } }

    Parameters are described below.

    Parameter Description Required
    CampaignIDS

    Array containing campaign IDs.

    Attention. The number of campaigns multiplied by the number of days in the report period must not exceed 1000.

    Yes
    StartDate Yes
    EndDate Yes
    Currency

    The currency to use for amounts in the response.

    Acceptable values: RUB, CHF, EUR, KZT, TRY, UAH, USD, BYN . The value must match the campaign currency; otherwise, an error is returned with code .

    For campaigns in units, either omit the parameter or pass NULL.

    IncludeVAT

    Calculate VAT for the cost of clicks in a currency - Yes/No. When the value is Yes, amounts shown in the response will include VAT. If omitted, Yes is assumed.

    If the Currency parameter is omitted, the IncludeVAT parameter is ignored.

    No
    IncludeDiscount

    Calculate the discount for the cost of clicks in a currency - Yes/No.

    When the value is Yes, the report will show amounts that include the discount (in other words, the amounts that are actually deducted from the campaign balance). When the value is No, the report will show amounts before the discount is applied. If omitted, Yes is assumed.

    Note. For campaigns that operate in a currency, the discount is applied when the cost per click is deducted.

    No
    Parameter Description Required
    GetSummaryStatRequest object
    CampaignIDS

    Array containing campaign IDs.

    Attention. The number of campaigns multiplied by the number of days in the report period must not exceed 1000.

    Yes
    StartDate The start date of the report period that statistics are being returned for (YYYY-MM-DD). Yes
    EndDate The end date of the report period that statistics are being returned for (YYYY-MM-DD). Yes
    Currency

    The currency to use for amounts in the response.

    Acceptable values: RUB, CHF, EUR, KZT, TRY, UAH, USD, BYN . The value must match the campaign currency; otherwise, an error is returned with code .

    For campaigns in units, either omit the parameter or pass NULL.

    For campaigns in a real currency
    IncludeVAT

    Calculate VAT for the cost of clicks in a currency - Yes/No. When the value is Yes, amounts shown in the response will include VAT. If omitted, Yes is assumed.

    If the Currency parameter is omitted, the IncludeVAT parameter is ignored.

    No
    IncludeDiscount

    Calculate the discount for the cost of clicks in a currency - Yes/No.

    When the value is Yes, the report will show amounts that include the discount (in other words, the amounts that are actually deducted from the campaign balance). When the value is No, the report will show amounts before the discount is applied. If omitted, Yes is assumed.

    Note. For campaigns that operate in a currency, the discount is applied when the cost per click is deducted.

    If the Currency parameter is omitted, the "No" value is assumed.

    No

    Output data

    The method returns an array of StatItem objects. Each object contains statistics for a single campaign for a single date in the selected period.

    Attention. If the requested campaign did not have any impressions for the entire period, information about the campaign is not output in the response.

    Part of the returned parameters are based on Yandex.Metrica data (see the Help section Yandex.Metrica: advertising campaign efficiency evaluation in the Help for Direct).

    { "data": [ { /* StatItem */ "The campaign ID."}}">CampaignID ": (int), "The data statistics are provided for."}}">StatDate ": (date), "\n

    The total cost of clicks on search (in the currency specified in the Currency input parameter).

    \n \n"}}">SumSearch

    ": (float), "\n

    \n \n"}}">SumContext

    ": (float), "Number of impressions in the search."}}">ShowsSearch ": (int), "Number of impressions in the Yandex Advertising Network."}}">ShowsContext ": (int), "Number of clicks in the search."}}">ClicksSearch ": (int), "Number of clicks in the Yandex Advertising Network."}}">ClicksContext ": (int), "\n

    \n"}}">SessionDepthSearch

    ": (float), "\n

    \n"}}">SessionDepthContext

    ": (float), "\n

    Taken from Yandex.Metrica data, and only if the CPAOptimizer automatic strategy is used on the search.

    \n"}}">GoalConversionSearch

    ": (float), "\n

    Taken from Yandex.Metrica data, but only if the CPAOptimizer automatic strategy is used in the Yandex Advertising Network.

    \n"}}">GoalConversionContext

    ": (float), "\n SumContext

    The total cost of clicks in the Yandex Advertising Network (in the currency specified in the Currency input parameter).

    ShowsSearch ShowsContext ClicksSearch ClicksContext SessionDepthSearch

    Session depth for a site when clicking through from the search.

    Taken from Yandex.Metrica data, and only if the CPAOptimizer automatic strategy is used on the search.

    SessionDepthContext

    Session depth for a site when clicking through from the Yandex Advertising Network.

    Taken from Yandex.Metrica data, but only if the CPAOptimizer automatic strategy is used in the Yandex Advertising Network.

    GoalConversionSearch

    The percentage of goal visits as part of the total number of visits when transferring from Search.

    Taken from Yandex.Metrica data, and only if the CPAOptimizer automatic strategy is used on the search.

    GoalConversionContext

    The percentage of goal visits as part of the total number of visits when transferring from the Yandex Advertising Network.

    Taken from Yandex.Metrica data, but only if the CPAOptimizer automatic strategy is used in the Yandex Advertising Network.

    GoalCostSearch SumContext

    The total cost of clicks in the Yandex Advertising Network (in the currency specified in the Currency input parameter).

    ShowsSearch Number of impressions in the search. ShowsContext Number of impressions in the Yandex Advertising Network. ClicksSearch Number of clicks in the search. ClicksContext Number of clicks in the Yandex Advertising Network. SessionDepthSearch

    Session depth for a site when clicking through from the search.

    Taken from Yandex.Metrica data, and only if the CPAOptimizer automatic strategy is used on the search.

    SessionDepthContext

    Session depth for a site when clicking through from the Yandex Advertising Network.

    Taken from Yandex.Metrica data, but only if the CPAOptimizer automatic strategy is used in the Yandex Advertising Network.

    GoalConversionSearch

    The percentage of goal visits as part of the total number of visits when transferring from Search.

    Taken from Yandex.Metrica data, and only if the CPAOptimizer automatic strategy is used on the search.

    GoalConversionContext

    The percentage of goal visits as part of the total number of visits when transferring from the Yandex Advertising Network.

    Taken from Yandex.Metrica data, but only if the CPAOptimizer automatic strategy is used in the Yandex Advertising Network.

    GoalCostSearch

    goal for click-throughs from the search.

    Taken from Yandex.Metrica data, and only if the CPAOptimizer automatic strategy is used on the search.

    GoalCostContext

    Cost of achieving a Yandex.Metrica goal for click-throughs from the Yandex Advertising Network.

    Taken from Yandex.Metrica data, but only if the CPAOptimizer automatic strategy is used in the Yandex Advertising Network.

    Notes Calculate the discount for the cost of clicks in a currency - Yes/No.

    When the value is Yes, the report will show amounts that include the discount (in other words, the amounts that are actually deducted from the campaign balance). When the value is No, the report will show amounts before the discount is applied. If omitted, Yes is assumed.

    Note. For campaigns that operate in a currency, the discount is applied when the cost per click is deducted.

    If the Currency parameter is omitted, the \"No\" value is assumed.

    RequiredNo"}}">IncludeDiscount input parameter.

    Cost of clicks before applying the discount = Cost of clicks actually deducted from the balance / (1 – Discount )

    Note. For campaigns that operate in a currency, the discount is applied when the cost per click is deducted.

    If the campaign was run in Yandex units, the amounts are returned “as is” , without any other conversions.