Русский
Русский
English
Статистика
Реклама

Блог компании sap

Проект Kyma как разрабатывать приложения для SAP с использованием технологии Kubernetes

09.10.2020 10:12:07 | Автор: admin

Привет, Хабр! Давай сегодня поговорим о том, зачем SAP придумал Kyma и что это такое.

Kyma/kee-ma/в переводе с греческого - волна.

Это проект с открытым исходным кодом, построенный на основе Kubernetes. Основное назначение Kyma упрощение создания serverless и микросервисных cloud-native приложений для расширения функциональности SAP бизнес-решений. То есть с помощью нее можно создавать необходимую компании функциональность, но которая по тем или иным причинам не доступна в стандартных SAP решениях (например, SAP Ariba, SAP Business Suite, S/4HANA и др.).

Проект Kyma первоначально был инициирован компанией SAP как open-source. В настоящее время он является участником Cloud Native Computing Foundation (CNCF). CNCF объединяет ведущих разработчиков, конечных пользователей и поставщиков различных cloud-native технологий и решений с открытым исходным кодом и является частью некоммерческой организации Linux Foundation. Например, здесь можно посмотреть ландшафт проектов CNCF.

Наверно возникает вопрос зачем требуется использовать Kyma вместо стандартного кластера Kubernetes? Несмотря на то, что Kubernetes (k8s) является платформой полного набора компонентов для управления жизненным циклом распределенных приложений, она оставляет за нами выбор решений для множества задач. Это может быть хранилище данных, резервное копирование, мониторинг шины обмена сообщениями, оркестровка сервисов и т.п. Для всех этих задач open source сообщество разработала большое количество проектов, решений и сервисов (например, Istio, Jaeger, Linkerd, и др.). Выбирая наиболее подходящий, можно гибко конфигурировать целевые системы. Но, с другой стороны, потребуется решение многих технических вопросов. Например, как установить то или иное решение/сервис, интегрировать его с другими выбранными сервисами, настроить сквозной мониторинг и др. Поэтому на реализацию оптимальной целевой архитектуры на кластере k8s может уйти много времени, экспертных знаний и дополнительных инженеров. Вот как раз для этого и можно использоваться Kyma.

Она дает разработчикам готовую и оптимальным образом сконфигурированную платформу для реализации облачных решений. Нет необходимости самостоятельно интегрировать все эти инструменты: в Kyma уже позаботились, чтобы все они хорошо работали вместе и всегда были в актуальном состоянии. Это позволяет разработчикам практически сразу начать создание своих приложений.

Kyma состоит из нескольких компонентов, основные из которых:

- Application connector используется для подключения любого приложения к кластеру Kubernetes и предоставления его API и событий (events) через Kubernetes Service Catalog.

- Serverless позволяет создавать расширения для приложения через механизм функций (код Node.js). Код функции может запускаться вызовами API, а также событиями, поступающими из внешней системы.

- Service Catalog предоставляет простой доступ к сервисам, которыми управляют сервисные брокеры, и использует их в приложениях. Например, можно легко применять сервисы сторонних облачных платформ, таких как Azure, AWS или GCP.

Кроме этого в Kyma интегрированы одни из самых оптимальных и функциональных сервисов, использующихся в разработке cloud-native приложений:

- Мониторинг и оповещение основаны на PrometheusиGrafana.

- Для логирования используется Loki.

- Обработка событий происходит в NATS.

- Как средство управления и хранения данных/объектов используется Rafter и MinIO.

- Оркестровка сервисов ведется через Istio.

- Трассировка распределенных микросервисов осуществляется в Jaeger.

- Аутентификация поддерживается Dex и др.

Давайте разберемся с использованием Kyma на примере расширения SAP Service Cloud и SAP Field Service Management для работы с клиентскими отзывами.

1. Потребитель пишет комментарий на Facebook с номером своего заказа.

2. Аналитический микросервис (-сервис) делает его сентиментный анализ.

3. И если комментарий отрицательный, создает заявку в SAP Field Service Management (FSM); администратор FSM назначает ее техническому специалисту.

4. Далее при завершении работы над заявкой запускается lambda-функция.

5. Lambda-функция создает ответ клиенту на основе результатов работы над заявкой и отправляет его.

Для установки доступны две версии: полная (Kyma) и облегченная (Kyma Lite). Облегченная версия используется для локальной разработки и не устанавливает такие компоненты, как ведение журнала, мониторинг и т.д. Полный список всех компонентов, установленных для полной и облегченной версии, можно найти тут. Можно кастомизировать набор устанавливаемых компонентов через установочный yaml-файл.

Сейчас вендор также запустил SAP Cloud Platform Extension Factory, Kyma runtime. Благодаря этому теперь можно получить Kubernetes кластер в составе SAP Cloud Platform вместе с другими сервисами платформы для разработки приложений. Extension Factory, Kyma runtime работает на кластере Kubernetes который разворачивается через Gardener (еще один open source проект SAP, платформа для управления кластерами Kubernetes) в выбранном пользователем облачном провайдере и в необходимом регионе. В дальнейшем Extension Factory, Kyma runtime будет доступна в триальном режиме в SAP Cloud Platform.

Давайте подведем итоги. Kyma основана на компонентах и стандартах с открытым исходным кодом. Она обеспечивает развертывание высокомасштабируемых приложений в архитектуре контейнерных микросервисов и позволяет применять лучшие практики для производительности, масштабируемости, эффективности и безопасности при разработке приложений.

Если вдруг вам захочется еще прочитать про Kyma, то вот дополнительные материалы:

Kyma Open Source website

SAP Help Portal

SAP Cloud Platform Discovery Center

Blog post: SAP Cloud Platform Extension Factory, Kyma runtime: How to get started

Kyma runtime onboarding mission

Автор Георгий Шутов, эксперт по платформенным решениямSAP CIS

Подробнее..

Как распознать промышленные детали по фотографиям с помощью машинного зрения

14.10.2020 12:12:47 | Автор: admin

Привет, Хабр! Сегодня поговорим о том, как нейронные сети могут помочь в распознавании деталей и зачем это вообще нужно. Недавно к нам обратился один из наших клиентов - крупная промышленная компания, производитель грузовых автомобилей и их комплектующих. Детали насчитывали большое количество возможных наименований. Из-за этого при визуальном распознавании сотрудники совершали ошибки. Решили создать приложение на основе компьютерного зрения и нейронных сетей. С его помощью стали проверять правильный ли выбор сделал рабочий (рис 1). Так же дополнительно было необходимо сверять наименование распознанной детали с наименованием, указанным в накладной на заказ.

Рис. 1Рис. 1

Данные

Первыми данными были фотографии деталей и их чертежи. На каждую деталь приходилось в среднем 500-700 фотографий. Они были выполнены сотрудниками завода. При детальном изучении снимков стало понятно, что большое количество фотографий почти не отличалось друг от друга. Схожие фотографии были сделаны в режиме высокоскоростной сьемки с минимальными отклонениями ракурса. Поскольку идентичные фотографии содержат схожую информацию, использовать такие фотографии в качестве данных для обучения нейронных сетей было нецелесообразно. Решили отказаться от использования большей части фотографий и запросить новые. Составили подробные требования к фотографиям.

Выбор модели

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

Использовать только ограничивающие рамки (Bounding Box) было бы недостаточно (Object detection). Они могли сильно перекрывать друг друга при разметки, обучении и распознавании, поэтому для обучения решили выбрать одну из моделей, с поддержкой метода сегментации изображения (Image segmentation) . (Рис. 2)

Рис. 2Рис. 2

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

В нашем случае разметка объектов на изображении выполнялась вручную на стороннем облачном сервисе. Он предоставлял возможность нескольким сотрудникам размечать один и тот же набор данных удаленно и после завершения разметки скачивать весь набор данных. (Рис. 3, 4, 5, 6)

Рис. 3Рис. 3Рис. 4Рис. 4Рис. 5Рис. 5Рис.6Рис.6

После разметки достаточного количества фотографий для экспериментов проводилось обучение первых моделей для распознавания деталей на сервере HPE DL380 c двумя видеокартами NVIDIA Tesla v100. В среднем, на обучение первых моделей было затрачено от 8 до 12 часов.

По результатам обучения, были выявлены проблемы, которые препятствовали распознаванию:

1. На фотографиях некоторых деталей были обнаружены лики, (объекты, не являющиеся частью деталей, но на которые модель обращает внимание при определении класса). Это способствовало неверному обучению сети.

2. Из-за специфики нейронных сетей модель не отличала друг от друга зеркальные детали, распознавая их как две детали одновременно. Это стало значимой проблемой, так как у заказчика было большое количество зеркальных деталей.

Что делать с ликами?

Чтобы решить эту проблему составили подробную инструкцию по сьемке фотографий для машинного обучения. Это позволило сократить количество ошибок и уменьшить число ликов при следующем обучении.

На фотографиях ниже (рис. 7 и 8) приведен пример ликов. На первой серии фотографий изображены детали первого класса при ярком освещении. На второй - детали второго класса при более темном освещении. На таком наборе данных при определении класса модель будет обращать внимание на фон и освещение. Это будет происходить, так как части изображения у первого и второго классов различны. Стоит заметить, что такая работа модели является некорректной: необходимо стремиться, чтобы при классификации модель опиралась на структуру деталей.

Рис.7. Пример фотографий первого классаРис.7. Пример фотографий первого классаРис. 8. Пример фотографий второго класса Рис. 8. Пример фотографий второго класса

Что делать с зеркальными деталями?

Чтобы решить проблему с распознаванием зеркальных деталей, мы решили использовать ансамбль моделей. Первая модель классифицировала детали на зеркальные и незеркальные, причем каждая симметричная деталь распознавалась как два объекта. Далее зеркальные детали отправлялись в следующие модели, которые были обучены для распознавания только зеркальных деталей. То есть под каждую пару зеркальных деталей была создана своя модель, которая классифицировала деталь как левую или правую (рис. 9).

Рис.9Рис.9

Как создать модель для разметки

Для создания моделей, которые классифицируют зеркальные детали, было запрошено около 2000 фотографий на каждый класс. Поскольку модели для распознавания зеркальных деталей имели бинарную классификацию (левая или правая деталь) для каждой модели было использовано 4000 фотографий.

Разметка такого большого количества фотографий потребовала бы много времени. Кроме того, 4000 фотографий использовалось в одной модели, распознающей зеркальные детали, а всего таких моделей было много: для каждой зеркальной детали уникальная. Решили сделать модель, которая выделяет маски и сохраняет их в необходимом виде. Вручную разметили 120 фотографий каждого класса, и на них обучили модель. После того как были размечены детали, неточная разметка была подкорректирована вручную. Такой подход сократил временные затраты и избавил от необходимости размечать большое количество изображений с нуля.

После этого модели для распознавания были обучены и подобраны параметры. (Рис. 10, 11).

Рис..10Рис..10Рис.11Рис.11

Распознавание бирок и накладных

Чтобы решить задачу с сопоставлением детали, выбранной рабочим, с деталью из накладной, было необходимо распознавать информацию о наименовании. Это возможно сделать с помощью штрихкода, который содержал информацию о номере детали. Таким образом, не было необходимости исследовать весь текст в накладной.

Для удобного и простого распознания на заводе разработали мобильный интерфейс. Он позволял делать фотографии с телефона или загружать их из памяти и отправлять в модель для распознавания. После этого на телефон пользователя приходила фотография с результатом и списком деталей, которые были найдены на ней.

Для удобного развёртывания моделей весь backend был перенесен на SAP Data Intelligence.

Интерфейс и SAP Data intelligence

SAP Data Intelligence позволяет не только публиковать и встраивать модели, но и создавать на их базе новые собственные операторы (например, от python оператора). Это помогает переиспользовать существующие модели и встраивать их в необходимых форматах (батч-обработка, стриминг, или публикация REST-сервисов). Кроме этого, основанный на flow-based подходе пайплайн может быть быстро адаптирован под меняющиеся условия. Например, если в будущем потребуется интеграция с ERP / MES или любой другой системой, это будет сделать довольно просто. Также все получаемые фотографии можно собирать в используемое Озеро Данных для дообучения модели и улучшения качества распознавания. Если потребуется масштабировать данный сервис, это будет сделать легко. Достаточно настроить уровень параллелизма (параметр multiplicity) и под модель будет поднято соответствующее количество реплик на уровне kubernetes. Есть встроенные инструменты для отладки пайплайна, логирования, трассировки, мониторинга.

Кстати, нужно пару слов сказать о том, на какой платформе собирался данный проект. Так как система в будущем должна пойти в промышленную эксплуатацию, желательно использовать оборудование промышленного класса надежности. Компания Cisco предоставила для пилота гиперконвергентную систему Cisco Hyperflex, про которую ранее на Хабре уже писали здесь, здесь и здесь .

Так как SAP Data Intelligence полностью построен на контейнерах, важно, чтобы были решены задачи отказоустойчивости кластера Kubernetes и его интеграция с сетями центра обработки данных, в котором будет развернуто решение. Фактически, мы полностью повторили в лаборатории типовой валидированный дизайн Cisco&SAP, описанный здесь и голова за инфраструктуру у нас больше не болела.

В SAP Data Intelligence был создан контейнер со всеми необходимыми библиотеками. Для публикации сервиса использовался стандартный оператор OpenAPI. Весь backend работал в контейнере на сервере. Пайплайн можно было так же запускать на любом другом сервере Data Intelligence (рис. 12).

Рис.12. Архитектура, используемая для реализации задачРис.12. Архитектура, используемая для реализации задачРис .13. Пайплайн в Data intelligenceРис .13. Пайплайн в Data intelligence

Интерфейс для заказчика был написан с помощью открытого фреймворка openui5. Приложением можно воспользоваться в браузере с помощью закрепленной ссылки, а также скачать его на смартфон.

Приложение отправляло сохраненные в памяти телефона фотографии на сервер, или позволяло сделать новую с помощью камеры телефона. После распознавания пользователь мог видеть список деталей на отправленной фотографии. А также можно просмотреть чертежи распознанных деталей.

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

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

Подробнее..

Как построить прогнозную модель для маркетолога в SAP Analytics Cloud без привлечения датасайнтистов

17.12.2020 14:07:58 | Автор: admin

Сегодня популярность проектов data science очень высока и бизнес понимает их важность и значимость. Рынок наполнен специалистами в этой области, которые умеют добиваться впечатляющих результатов. Но такие проекты нередко бывают дорогостоящими, и не всегда для простых задач нужно привлекать профессионалов в этой области. Создание некоторых прогнозов вполне по силам самим бизнес-пользователям. Например, специалисты из отдела маркетинга могут прогнозировать отклик на маркетинговые кампании. Это становится возможным при наличии инструмента, позволяющего за несколько минут построить прогноз и легко интерпретировать результаты с точки зрения бизнес-смысла.

SAP Analytics Cloud (SAC) облачный инструмент, совмещающий в себе функции BI, планирования и прогнозирования, он также оснащен множеством функций расширенной аналитики: интеллектуальными подсказками, автоматизированным анализом данных и возможностями автоматического прогнозирования.

В этой статье мы расскажем о том, как построено прогнозирование в SAP Analytics Cloud, какие сценарии доступны на сегодняшний день, а также как этот процесс может быть интегрирован с планированием.

Функциональность Smart Predict ориентирована на бизнес-пользователя и позволяет строить прогнозы высокой точности без привлечения специалистов Data Science. Со стороны пользователя системы прогноз происходит в черном ящике, но в реальности это, конечно же, не так. Алгоритмы прогнозирования в SAC идентичны алгоритмам модуляAutomated Analytics инструмента SAP Predictive Analytics. Об алгоритмах, лежащих в основе этого продукта, есть множество материалов, мы предлагаем прочитать эту статью. На вопрос: Получается, Automated Analytics переехал в SAP Analytics Cloud? - мы отвечаем - Да, но пока только частично. Вот какая разница и сходство в функциональных возможностях инструментов (рис.1)

SAP Analytic Cloud в настоящее время предлагает 3 прогнозных сценария:

Классификация. В данном случае предполагается бинарная классификация: предсказываются значения целевой переменной, которая может иметь только два значения -да и нет или 0 и 1. Примерами сценария классификации могут быть:

Прогноз оттока клиентов, где целевая переменная предсказывает, уйдет клиент или нет.

Прогноз склонности клиента к покупке с целевой переменной, прогнозирующей будет ли клиент покупать предложенный ему товар или нет.

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

Регрессия. Предсказывает числовое значение целевой переменной в зависимости от переменных, описывающих ее. Примеры регрессионных сценариев:

Количество клиентов, посещающих магазин в обеденное время.

Выручка от каждого клиента в следующем квартале.

Цена продажи подержанных автомобилей.

Прогнозирование временного ряда. Предсказывает значение переменной с течением времени с учетом дополнительных описательных переменных. Примеры сценария прогнозирования временных рядов:

Выручка по каждой продуктовой линейке в течение следующих нескольких кварталов.

Количество велосипедов, арендованных в городе в течение следующих нескольких дней.

Командировочные расходы в ближайшие несколько месяцев.

В процессе прогнозирования мы будем работать с тремя типами датасетов: тренировочным, прикладным и результирующим (рис. 2)

Процесс прогнозирования в SAP Analytics Cloud осуществляется в несколько простых этапов. Мы рассмотрим его на примере прогнозирования оттока клиентов интернет-магазина. Для начала нам необходимо загрузить в систему тренировочный датасет из системы-источника или excel файла. Также SAP Analytics Cloud позволяет прогнозировать в режиме Live (избегая загрузки данных в облако) на таблицах SAP HANA. В этом случае для пользователя SAC процесс остается неизменным, но построение прогноза происходит на стороне SAP HANA с использованием библиотеки Automated Predictive Library (APL).

Наш тренировочный датасет имеет следующие поля:

Customer ID

Уникальный ID каждого клиента

Usage Category (Month)

Количество времени, проведенное клиентом на портале в текущем месяце

Average Usage (Year)

Среднее количество времени, проведенное клиентом на портале за прошедший год

Usage Category (previous Month)

Количество времени, проведенное клиентом на портале за прошедший месяц

Service Type

Флаговая переменная, указывающая тип сервиса клиента: премиум или стандарт

Product Category

Категория продукта интернет-магазина, наиболее часто заказываемая клиентом

Message Allowance

Флаговая переменная, указывающая, давал ли клиент согласие на получение сообщений

Average Marketing Activity (Bi-yearly)

Среднее число маркетинговых предложений для клиента за последние 2 года

Average Visit Time (min)

Среднее количество времени, проведенное клиентом на портале за каждый визит

Pages per Visit

Среднее число страниц интернет-магазина, посещаемых клиентом за один визит

Delta Revenue (Previous Month)

Разница между выручкой от данного клиента за предыдущий и текущий месяц

Revenue (Current Month)

Выручка от данного клиента в текущем месяце

Service Failure Rate (%)

Доля случаев, когда пользователь сталкивался с ошибками в работе портала

Customer Lifetime (days)

Количество дней с момента регистрации

Product Abandonment

Число продуктов, которые были помещены клиентом в корзину, но не оплачены за последний квартал

Contract Activity

Флаговая переменная, указывающая, отказался ли данный пользователь от услуг интернет-магазина. Целевая переменная, которую мы будем прогнозировать.

Следующим шагом построение прогноза будет выбор сценария прогнозирования.

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

После этого мы создаем прогнозную модель и выбираем заранее подготовленный датасет, как источник данных для обучения. У пользователя также есть возможность редактировать метаданные. Далее мы выбираем целевую переменную, ее мы будем прогнозировать. В нашем случае это переменная Contract Activity, идентифицирующая отток клиентов. Также мы можем исключить некоторые переменные, если понимаем, что они никак не повлияют на формирование прогноза. Например, в нашем случае точно можно исключить Customer ID. Это может ускорить процесс выполнения прогноза, но их сохранение не мешает процессу моделирования.

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

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

После обучения модели нам выдается подробный отчет о ее качестве, как показано на рисунке ниже. Мы видим два ключевых показателя эффективности: прогностическая сила и достоверность прогноза.

Прогностическая сила (KI) указывает на долю информации в целевой переменной, которую могут описать другие переменные модели (объясняющие переменные). Гипотетическая модель с прогностической силой 1,0 является идеальной, поскольку позволяет объяснить 100% информации целевой переменной, а модель с прогностической силой 0 является чисто случайной.

Достоверность прогноза (KR) показывает способность модели достичь той же производительности, когда она применяется к новому набору данных, имеющему те же характеристики, что и обучающий набор данных. Приемлемой считается достоверность прогноза не менее 95%.

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

Кроме этого, на рисунке ниже мы видим кривую производительности AUC ROC. Ось X показывает, какой процент от общей выборки составляют положительные цели; ось Y представляет их верно идентифицированный процент, который обнаружил алгоритм. Здесь необходимо пояснить, что положительными целями в данном случае считается целевая группа, а именно клиенты, отказавшиеся от услуг интернет-магазина.

Зеленая кривая олицетворяет некую идеальную модель с максимально возможным процентом обнаруженной цели. Например, если 25% общей выборки будут составлять ушедшие клиенты, то идеальная модель правильно классифицирует все 25% таких клиентов.

Красная кривая показывает минимальный процент обнаруженной цели, полученный случайной моделью. То есть случайно взяв 10% населения, вы бы определили 10% клиентов.

Синяя кривая показывает процент обнаруженной цели с использованием нашей модели. Например, если 10% выборки составляют ушедшие клиенты, мы обнаруживаем примерно 75%. Чем ближе синяя линия подходит к зеленой, тем лучше модель. Чем больше расстояние между красной и синей линиями, тем больше лифт модели.

Кроме того, SAC предоставляет возможность увидеть, как именно ключевые факторы влияют на целевую переменную.

Например, посмотрим более подробную аналитику по предиктору Average Visit Time, показывающему среднее количество времени, которое клиент проводит на портале интернет-магазина. По умолчанию предлагается отследить влияние этого фактора на столбчатой диаграмме, но также существует возможность настройки различных типов визуализации.

Мы видим, что клиенты, проводившие на страницах интернет-магазина от 10 до 22 и от 1 до 3 минут, имеют наибольшую склонность отказаться от услуг. Напротив, покупатели, находящиеся на портале от 3 до 7 и от 7 до 10 минут, показывают наименьшую вероятность уйти. Результаты выглядят волне логично: уходят те, кто проводили на сайте или слишком мало, или слишком много времени. Подобный анализ можно провести по всем ключевым предикторам.

Также для оценки качества получившейся модели SAC предлагает проанализировать матрицы неточностей, различные графики, иллюстрирующие эффективность модели (лифт, чувствительность, кривая Лоренца и плотность) и смоделировать возможные выигрыши и проигрыши от использования данного прогноза.

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

На выходе мы получаем датасет с прогнозными значениями целевой переменной, на основе которого может быть легко сформирована модель данных. Она, в свою очередь, может являться источником данных для построения аналитической отчетности в SAC. Например, для этого кейса мы использовали интеллектуальную функцию Smart Discovery и получили автоматических дашборд на спрогнозированных данных.

Таким образом, прогнозирование легко вписывается в процесс анализа данных в SAC. С недавних пор функционал прогнозирования в решении также может быть легко интегрирован в процесс планирования.

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

Кроме того, в процессе создания отчетов пользователи также могут использовать прогностические функции, например, автоматический прогноз. Он позволяет продлить график временного ряда.

Алгоритм выполнения такого прогноза описан здесь, линейная регрессия или тройное экспоненциальное сглаживание. Результаты прогноза видны ниже, рядом с графиком факта появляется пунктирная линия прогноза и доверительный интервал.

Также прогноз можно добавлять в таблицы и использовать оттуда данные, например, как базу для будущего плана.

Таким образом, процесс прогнозирования в SAP Analytics Cloud достаточно прост и максимально ориентирован на бизнес-пользователя, но дает возможность получения прогностических моделей высокого качества для решения типовых бизнес-задач.

Данный инструмент является stand-alone решением и может стать частью мультивендорной архитектуры. Интеграция SAP Analytics Cloud с решениями SAP нативна. Кроме того, существует стандартный бизнес контент для различных индустрий и линий бизнеса. Отчеты могут быть дополнены прогнозными и плановыми данными, а также обогащены функциями расширенной аналитики.

Автор Анастасия Николаичева, архитектор бизнес-решений SAP CIS

Подробнее..

Как сделать памятку по родословной греческих богов в SAP HANA Cloud

29.06.2020 14:12:48 | Автор: admin
В этом году у компании SAP появилось новое решение SAP HANA Cloud, которое предоставляет широкий спектр возможностей для работы с данными, позволяет создавать, запускать, развертывать новые и обновлять существующие приложения. Основу этого решения составляет SAP HANA, применяемая для работы с данными, требующими высокую скорость обработки. Мы называем такие данные горячими, поскольку они размещены в оперативной памяти. Это гарантирует быстрый доступ и высокую производительность. Кроме этого, в SAP HANA Cloud интегрировано озеро данных, и его развертывание происходит автоматически, а управление не вызывает затруднений. Оно реляционное и позволяет оптимизировать стоимость хранения структурированной информации. Там находятся холодные данные, то есть они будут обрабатываться несколько медленнее, чем горячие. SAP HANA Cloud предлагает и промежуточный уровень хранения данных SAP HANA Native Storage Extension, хранение данных на диске и загрузка через буферный кеш. Возможности многоуровневого хранения обеспечивают высокий показатель масштабирования и эластичности, оптимизации затрат без ущерба для производительности. Предлагаю разобраться как работает новинка на примере создания родословной греческих богов и героев.

image

За основу возьмем скрипты из приложения Appendix B Greek Mythology Graph Example документации SAP HANA Graph Reference для обычной платформы SAP HANA, которая развертывается локально в ЦОДе. Основное назначение этого примера показать аналитические возможности SAP HANA, показать, как можно анализировать взаимосвязь объектов и событий с помощью алгоритмов работы с графами. Мы не будем останавливаться подробно на этой технологии, основная идея будет понятна из дальнейшего изложения. Кому интересно могут разобраться самостоятельно, испытав возможности SAP HANA express edition или пройти бесплатный курс Analyzing Connected Data with SAP HANA Graph.
Давайте разместим данные в реляционном облаке SAP HANA Cloud и посмотрим возможности по анализу родственных связей греческих героев. Помните, в Мифах и легендах Древней Греции было очень много персонажей и к середине уже не помнишь кто сын и брат кого? Вот мы сделаем себе памятку и никогда уже не забудем.
Для начала создадим экземпляр SAP HANA Cloud. Это сделать достаточно просто, надо заполнить параметры будущей системы и подождать несколько минут, пока экземпляр будет для вас развернут (рис.1).

image
Рисунок 1

Итак, нажимаем кнопку Create Instance и перед нами открывается первая страница мастера создания, на которой надо указать краткое название экземпляра, задать пароль и привести описание (рис.2)
image
Рисунок 2

Нажимаем кнопку Step 2, теперь наша задача указать параметры будущего экземпляра SAP HANA. Здесь можно задать только размер оперативной памяти будущей системы, все остальные параметры будут определены автоматически (рис.3).

image
Рисунок 3

Мы видим, что сейчас у нас есть возможность выбрать минимальное значение 30Гб и максимальное 900Гб. Выбираем 30Гб и автоматически определяется, что при таком объеме памяти необходимо два виртуальных процессора для поддержки расчетов и 120Гб для хранения данных на диске. Здесь места выделяется больше, поскольку мы можем применять технологию SAP HANA Native Storage Extension (NSE). Если выбрать размер памяти больше, например, 255Гб, то потребуется уже 17 виртуальных процессоров и 720ГБ дисковой памяти (рис. 4).

image
Рисунок 4

Но нам столько памяти для примера не требуется. Возвращаем параметры в исходное значение и нажимаем Step 3. Теперь мы должны выбрать, будем ли использовать озеро данных. Для нас ответ очевиден. Конечно, будем. Именно такой эксперимент мы и хотим провести (рис.5).

image
Рисунок 5

На этом шаге у нас значительно больше возможностей и свободы по созданию экземпляра озера данных. Вы можете выбирать размеры необходимых вычислительных ресурсов и дискового хранилища. Параметры используемых компонент/узлов выберутся автоматически. Система сама определит необходимые вычислительные ресурсы для координатора и рабочих узлов. Если вы хотите побольше узнать об этих компонентах, то лучше обратится к ресурсам SAP IQ и озеру данных SAP HANA Cloud. А мы двигаемся дальше, нажимаем Step 4 (рис.6).

image
Рисунок 6

На этом шаге мы определим или ограничим IP адреса, которые могут получить доступ к будущему экземпляру SAP HANA. Как видим, это последний шаг нашего мастера (рис.7), осталось нажать Create Instance и пойти налить себе кофе.

image
Рисунок 7

Процесс запущен и пройдет совсем немного времени, мы как раз успели выпить крепкого кофе, несмотря на позднюю ночь. А когда еще можно спокойно экспериментировать с системой и прикручивать разные фишки? Итак, наша система создана (рис.8).

image
Рисунок 8

У нас есть два варианта: открыть SAP HANA Cockpit или SAP HANA Database Explorer. Мы знаем, что запустить второй продукт можно будет из Cockpit. Поэтому открываем SAP HANA Cockpit, заодно и посмотрим, что там есть. Но сначала необходимо будет указать пользователя и его пароль. Обратите внимание, что пользователь SYSTEM вам недоступен, вы должны применять DBADMIN. При этом указать пароль, который вы задали при создании экземпляра, как на рис.9.

image
Рисунок 9

Мы зашли в Cockpit и видим традиционный интерфейс SAP в виде плиточек, когда каждая из них отвечает за свою задачу. Справа в верхнем углу видим ссылку на SQL Console (рис.10).

image
Рисунок 10

Именно она нам позволяет перейти к SAP HANA Database Explorer.
image
Интерфейс этого инструмента похож на SAP Web IDE, но предназначен только для работы с объектами базы данных. В первую очередь, конечно, нас интересует как попасть в озеро данных. Ведь сейчас мы открыли инструмент для работы с HANA. Перейдем в навигаторе на пункт Remote Source и увидим ссылку на озеро (SYSRDL, RDL Relation Data Lake). Вот он желанный доступ (рис.11).

image
Рисунок 11

Двинемся дальше, мы же не должны работать под администратором. Нужно создать тестового пользователя, под которым проведем эксперимент с графовым движком HANA, но данные разместим в реляционном озере данных.

image
Рисунок 12
СКРИПТ:
CREATE USER tstuser PASSWORD Password1 NO FORCE_FIRST_PASSWORD_CHANGE SET USERGROUP DEFAULT;

Мы планируем работать с озером данных, поэтому надо обязательно дать права, например, HANA_SYSRDL#CG_ADMIN_ROLE, чтобы можно свободно создавать объекты, делать все, что нам вздумается.
image
СКРИПТ:
GRANT HANA_SYSRDL#CG_ADMIN_ROLE TO tstuser;
Теперь работа под администратором SAP HANA завершена, SAP HANA Database Explorer можно закрыть и нам надо войти в него под новым созданным пользователем: tstuser. Для простоты, вернемся в SAP HANA Cockpit и завершим сессию администратора. Для этого в левом верхнем углу есть такая ссылка Clear Credentials (рис.12).

image
Рисунок 12

После нажатия на нее нам снова надо войти в систему, но теперь под пользователем tstuser (рис.13)
image
Рисунок 13

И мы снова можем открыть SQL Console, чтобы вернуться в SAP HANA Database Explorer, но под новым пользователем (рис.14).

image
image
Рисунок 14

СКРИПТ:
SELECT SESSION_USER, CURRENT_SCHEMA FROM DUMMY;
Все, теперь мы уверены, что работаем с HANA под нужным пользователем. Пора создавать таблицы в озере данных. Для этого есть специальная процедура SYSRDL#CG.REMOTE_EXECUTE, в которую надо передать один параметр строку = команду. Используя, эту функцию создаем в озере данных таблицу (рис. 15), в которой будут хранится все наши персонажи: герои, греческие Боги и титаны.

image
Рисунок 15
СКРИПТ:
CALL SYSRDL#CG.REMOTE_EXECUTE ('
BEGIN

CREATE TABLE MEMBERS (
NAME VARCHAR(100) PRIMARY KEY,
TYPE VARCHAR(100),
RESIDENCE VARCHAR(100)
);

END');
И затем создаем таблицу в которой будем хранить родственные связи этих персонажей (рис. 16).

image
Рисунок 16

СКРИПТ:
CALL SYSRDL#CG.REMOTE_EXECUTE ('
BEGIN
CREATE TABLE RELATIONSHIPS (
KEY INTEGER UNIQUE NOT NULL,
SOURCE VARCHAR(100) NOT NULL,
TARGET VARCHAR(100) NOT NULL,
TYPE VARCHAR(100),
FOREIGN KEY RELATION_SOURCE (SOURCE) references MEMBERS(NAME) ON UPDATE RESTRICT ON DELETE RESTRICT,
FOREIGN KEY RELATION_TARGET (TARGET) references MEMBERS(NAME) ON UPDATE RESTRICT ON DELETE RESTRICT
);
END');
Мы не будем сейчас заниматься вопросами интеграции, это отдельная история. В исходном примере есть команды INSERT для создания греческих Богов и их родственных отношений. Используем эти команды. Надо только помнить, что команду мы передаем через процедуру в озеро данных, поэтому надо кавычки удвоить, как показано на рис.17.

image
Рисунок 17

СКРИПТ: CALL SYSRDL#CG.REMOTE_EXECUTE ('
BEGIN
INSERT INTO MEMBERS(NAME, TYPE)
VALUES (''Chaos'', ''primordial deity'');
INSERT INTO MEMBERS(NAME, TYPE)
VALUES (''Gaia'', ''primordial deity'');
INSERT INTO MEMBERS(NAME, TYPE)
VALUES (''Uranus'', ''primordial deity'');
INSERT INTO MEMBERS(NAME, TYPE, RESIDENCE)
VALUES (''Rhea'', ''titan'', ''Tartarus'');
INSERT INTO MEMBERS(NAME, TYPE, RESIDENCE)
VALUES (''Cronus'', ''titan'', ''Tartarus'');
INSERT INTO MEMBERS(NAME, TYPE, RESIDENCE)
VALUES (''Zeus'', ''god'', ''Olympus'');
INSERT INTO MEMBERS(NAME, TYPE, RESIDENCE)
VALUES (''Poseidon'', ''god'', ''Olympus'');
INSERT INTO MEMBERS(NAME, TYPE, RESIDENCE)
VALUES (''Hades'', ''god'', ''Underworld'');
INSERT INTO MEMBERS(NAME, TYPE, RESIDENCE)
VALUES (''Hera'', ''god'', ''Olympus'');
INSERT INTO MEMBERS(NAME, TYPE, RESIDENCE)
VALUES (''Demeter'', ''god'', ''Olympus'');
INSERT INTO MEMBERS(NAME, TYPE, RESIDENCE)
VALUES (''Athena'', ''god'', ''Olympus'');
INSERT INTO MEMBERS(NAME, TYPE, RESIDENCE)
VALUES (''Ares'', ''god'', ''Olympus'');
INSERT INTO MEMBERS(NAME, TYPE, RESIDENCE)
VALUES (''Aphrodite'', ''god'', ''Olympus'');
INSERT INTO MEMBERS(NAME, TYPE, RESIDENCE)
VALUES (''Hephaestus'', ''god'', ''Olympus'');
INSERT INTO MEMBERS(NAME, TYPE, RESIDENCE)
VALUES (''Persephone'', ''god'', ''Underworld'');
END');
И вторая таблица (рис. 18)

image
Рисунок 18

СКРИПТ:
CALL SYSRDL#CG.REMOTE_EXECUTE ('
BEGIN
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (1, ''Chaos'', ''Gaia'', ''hasDaughter'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (2, ''Gaia'', ''Uranus'', ''hasSon'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (3, ''Gaia'', ''Cronus'', ''hasSon'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (4, ''Uranus'', ''Cronus'', ''hasSon'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (5, ''Gaia'', ''Rhea'', ''hasDaughter'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (6, ''Uranus'', ''Rhea'', ''hasDaughter'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (7, ''Cronus'', ''Zeus'', ''hasSon'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (8, ''Rhea'', ''Zeus'', ''hasSon'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (9, ''Cronus'', ''Hera'', ''hasDaughter'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (10, ''Rhea'', ''Hera'', ''hasDaughter'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (11, ''Cronus'', ''Demeter'', ''hasDaughter'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (12, ''Rhea'', ''Demeter'', ''hasDaughter'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (13, ''Cronus'', ''Poseidon'', ''hasSon'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (14, ''Rhea'', ''Poseidon'', ''hasSon'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (15, ''Cronus'', ''Hades'', ''hasSon'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (16, ''Rhea'', ''Hades'', ''hasSon'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (17, ''Zeus'', ''Athena'', ''hasDaughter'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (18, ''Zeus'', ''Ares'', ''hasSon'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (19, ''Hera'', ''Ares'', ''hasSon'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (20, ''Uranus'', ''Aphrodite'', ''hasDaughter'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (21, ''Zeus'', ''Hephaestus'', ''hasSon'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (22, ''Hera'', ''Hephaestus'', ''hasSon'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (23, ''Zeus'', ''Persephone'', ''hasDaughter'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (24, ''Demeter'', ''Persephone'', ''hasDaughter'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (25, ''Zeus'', ''Hera'', ''marriedTo'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (26, ''Hera'', ''Zeus'', ''marriedTo'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (27, ''Hades'', ''Persephone'', ''marriedTo'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (28, ''Persephone'', ''Hades'', ''marriedTo'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (29, ''Aphrodite'', ''Hephaestus'', ''marriedTo'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (30, ''Hephaestus'', ''Aphrodite'', ''marriedTo'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (31, ''Cronus'', ''Rhea'', ''marriedTo'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (32, ''Rhea'', ''Cronus'', ''marriedTo'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (33, ''Uranus'', ''Gaia'', ''marriedTo'');
INSERT INTO RELATIONSHIPS(KEY, SOURCE, TARGET, TYPE)
VALUES (34, ''Gaia'', ''Uranus'', ''marriedTo'');
END');
Откроем теперь снова Remote Source. Нам надо на основании описания таблиц в озере данных создать виртуальные таблицы в HANA (рис. 19).

image
Рисунок 19

Находим обе таблицы, устанавливаем галочки напротив таблиц и нажимаем кнопку Create Virtual Object(s), как показано на рис.20.

image
Рисунок 20
У нас есть возможность указать схему, в которой виртуальные таблицы будут созданы. И там надо указать префикс, чтобы эти таблицы легче было найти. После этого мы можем в навигаторе выбрать Table, увидеть наши таблицы и посмотреть данные (рис. 21).

image
Рисунок 21

На этом шаге важно обратить внимание на фильтр внизу слева. Там должно быть указано имя нашего пользователя или наша схема TSTUSER.
Вот почти все готово. Мы создали в озере таблицы и загрузили в них данные, а для доступа к ним с уровня HANA у нас есть виртуальные таблицы. Мы готовы создать новый объект граф (рис. 22).

image
Рисунок 22

СКРИПТ:
CREATE GRAPH WORKSPACE GREEK_MYTHOLOGY
EDGE TABLE TSTUSER.RDL_RELATIONSHIPS
SOURCE COLUMN SOURCE
TARGET COLUMN TARGET
KEY COLUMN KEY
VERTEX TABLE TSTUSER.RDL_MEMBERS
KEY COLUMN NAME;
Все сработало, граф готов. И сразу можно попробовать сделать какой-нибудь простой запрос к данным графа, например, найти всех дочерей Хаоса и всех дочерей этих дочерей. Для этого нам поможет Cypher язык для анализа графов. Он был специально создан для работы с графами, удобный, простой и помогает решать сложные задачи. Нам только надо помнить, что скрипт Cypher надо обернуть в SQL запрос с помощью табличной функции. Посмотрите, как на этом языке решается наша задача (рис.23).

image
Рисунок 23

СКРИПТ:
SELECT * FROM OPENCYPHER_TABLE( GRAPH WORKSPACE GREEK_MYTHOLOGY QUERY
'
MATCH p = (a)-[*1..2]->(b)
WHERE a.NAME = ''Chaos'' AND ALL(e IN RELATIONSHIPS(p) WHERE e.TYPE=''hasDaughter'')
RETURN b.NAME AS Name
ORDER BY b.NAME
'
)
Проверим, как работает визуальный инструмент SAP HANA для анализа графов. Для этого в навигаторе выберем Graph Workspace (рис. 24).

image
Рисунок 24

И теперь можно увидеть наш граф (рис. 25).

image
Рисунок 25

Вы видите уже раскрашенный граф. Это мы сделали с помощью настроек в правой стороне экрана. Слева в верхнем углу показывается детальная информация по узлу, который в данный момент выделен.
Что ж Мы сделали это. Данные находятся в озере данных, а их анализ мы проводим инструментами в SAP HANA. Одна технология вычисляет данные, а другая отвечает за их хранение. Когда происходит обработка данных графа, они запрашиваются из озера данных и передаются в SAP HANA. Можем ли мы ускорить наши запросы? Как сделать так, чтобы данные хранились в оперативной памяти и не подгружались из озера данных? Есть простой, но не очень красивый способ создать таблицу, в которую загрузить содержимое таблицы озера данных (рис. 26).

image
Рисунок 26

СКРИПТ:
CREATE COLUMN TABLE MEMBERS AS (SELECT * FROM TSTUSER.RDL_MEMBERS)
Но есть еще один способ это применение репликации данных в оперативную память SAP HANA. Это может обеспечить лучшую производительность запросов SQL, чем доступ к данным, размещенным в озере данных с помощью виртуальной таблицы. Вы можете переключаться между виртуальными и таблицами репликации. Для этого необходимо к виртуальной таблице добавить таблицу реплики. Это можно сделать с помощью инструкции ALTER VIRTUAL TABLE. После чего, запрос, использующий виртуальную таблицу, автоматически обращается к таблице реплик, которая размещается в оперативной памяти SAP HANA. Давайте посмотрим, как это сделать, проведем эксперимент. Выполним такой запрос (рис. 27).

image
Рисунок 27

СКРИПТ:
SELECT R.KEY, R.SOURCE, R.TYPE
FROM TSTUSER.RDL_RELATIONSHIPS R inner join TSTUSER.MEMBERS M on R.SOURCE=M.NAME

И посмотрим, сколько надо было времени, чтобы выполнить этот запрос (рис. 28).

image
Мы видим, потребовалось 92 миллисекунды. Давайте включим механизм репликации. Для этого надо сделать ALTER VIRTUAL TABLE виртуальной таблицы, после чего данные Озера будут реплицированы в оперативную память SAP HANA.

image
Рисунок 28

СКРИПТ:
ALTER VIRTUAL TABLE RDL_RELATIONSHIPS ADD SHARED SNAPSHOT REPLICA COLUMN LOADABLE;
Проверим время выполнения, как на рисунке 29.

image
Рисунок 29

Получили 7 миллисекунд. Это отличный результат! Минимальными усилиями мы переместили данные в оперативную память. Причем, если вы закончили анализ и вас устроит производительность, можно снова отключить репликацию (рис. 30).

image
Рисунок 30

СКРИПТ:
ALTER VIRTUAL TABLE RDL_RELATIONSHIPS DROP REPLICA;
Теперь данные опять подгружаются из Озера только по запросу, а оперативная память SAP HANA свободна для новых задач. Сегодня мы выполнили, на мой взгляд, интересную работу и протестировали SAP HANA Cloud на быстроту, легкую организацию единой точки доступа к данным. Продукт будет развиваться, и мы ожидаем, что в ближайшее время может появится прямое соединение с озером данных. Новая возможность обеспечит более высокую скорость загрузки больших объемов информации, отказ от ненужных служебных данных и повышение производительности операций, специфичных для озера данных. Мы будем создавать и выполнять хранимые процедуры непосредственно в облаке данных на технологии SAP IQ, то есть сможем применять обработку и бизнес-логику там, где находятся сами данные.
Александр Тарасов, старший бизнес-архитектор SAP CIS
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru