BI Consult Desktop Logo BI Consult Mobile Logo
  • Перейти на КликСенс
  • Перейти на КликВью
  • Перейти на Tableau
  • Перейти на Power BI
  • российские bi dwh dl
  • Главная
  • Продукты Business-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • Энергетика
    • Фрод-менеджмент
    • E-Commerce
    • Фармацевтика
    • Построение хранилища данных
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • Process Mining
    • Сквозная аналитика
  • Платформы
    • Qlik Sense
    • QlikView
    • Tableau
    • Microsoft Power BI
    • Геоаналитика Qlik GeoAnalytics
    • Qlik NPrinting - рассылка отчетности QlikView/Qlik Sense
    • KliqPlanning Suite - бюджетирование в QlikView
    • ATK BiView-1C Коннектор (для Qlik/Tableau/PowerBI)
    • QlikView/Qlik Sense SAP Коннектор
    • QlikView R-Коннектор
    • Qlik Web Connectors - коннектор Google, Facebook, Twitter
    • Vizlib Qlik Sense extentions (библиотека экстеншнов)
    • Библиотека extention для Qlik
    • Qlik Alerting
    • Qlik Data Integration Platform - создание Data Lake
    • Qlik Data Catalog решение для Data Governance
    • ATK BiView документация
  • Услуги
    • Консалтинг
    • Пилотный проект
    • План обучения и сертификации
    • Подготовка специалистов по Qlik
    • Бесплатное обучение Qlik
    • Сертификация Qlik
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • Аудит приложений Qlik и Tableau
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс по Qlik Sense
    • Учебный курс по Tableau
    • Учебный курс по Microsoft Power BI
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс для бизнес-аналитиков
    • Учебный курс по NPrinting
    • Учебный курс по BigQuery
    • Учебный курс по Azure Databricks
    • Учебный курс по DWH
    • Учебный курс по Data Governance
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс администратора Qlik Sense
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

QlikView / Qlik Sense

  • Qlik Sense
    • Возможности Qlik Sense
    • Qlik Sense Enterprise
    • Qlik Sense Desktop
    • Qlik Sense Saas облачная инфраструктура для компаний
    • Источники данных и хранение данных
    • Безопасность и разграничение прав доступа
    • Масштабируемость
    • Политика лицензирования Qlik Sense
    • Qlik Sense November 2021: новые возможности
    • Географические карты в Qlik Sense
    • Qlik Sense Cloud / Qlik Sense в облаке
    • Учебное пособие по Qlik Sense
  • QlikView
    • Архитектура
    • Отличия QlikView от традиционных BI-систем
    • Политика лицензирования QlikView
    • Системные требования и сайзинг
    • Отличие от OLAP-систем
    • QlikView on Mobile
    • Qlik и Big Data
    • Демонстрационные примеры
    • QlikView в "облаке" (Amazon) / QlikView in the cloud
    • Интеграция QlikView с Microsoft SharePoint
    • Учебное пособие по QlikView
    • Что такое QlikView Publisher
    • QlikView Extranet Server и дистрибуция отчетности внешним пользователям
  • Qlik Data Catalog
  • Qlik Alerting
  • Qlik Data Integration Platform
  • Add-ons для QlikView
    • Vizlib Qlik Sense extentions (библиотека экстеншнов)
    • QlikView/Qlik Sense ATK BiView-1C Коннектор
    • Документация ATK BiView
    • Qlik NPrinting
    • Геоаналитика Qlik GeoAnalytics
    • GeoQlik
    • KliqPlanning Suite
    • QlikView/Qlik Sense SAP Коннектор
    • QlikView R-Коннектор
    • Qlik Web Connectors
    • QlikView Cognos TM1 Коннектор
    • Визуализация графов в Qlik Sense с помощью Ogma / Linkurious
  • Учебный курс по Qlik Sense

Tableau

  • Tableau
    • Tableau Desktop
    • Tableau Server
    • Tableau Prep
    • Технологии
    • Источники данных Tableau
    • Безопасность в Tableau
    • Политика лицензирования
    • Tableau 2021: новые возможности
    • Сравнение продуктов Tableau (Desktop, Server, Online, Public)
    • Демонстрационные примеры
    • Учебный портал Tableau
    • Коробочное решение "Мониторинг Tableau Server"
    • Чем отличаются Tableau Reader и Viewer?
  • Учебный курс по Tableau

Другое

  • Microsoft Power BI
    • Power BI Desktop
    • Power BI Report Server
    • Отраслевые решения Microsoft Power BI
    • Политика лицензирования Microsoft Power BI
    • Power BI Mobile
    • Учебные курсы Microsoft Power BI
    • Архитектура Power BI
    • Обработка данных в Power BI
    • Аудит системы Power BI
    • Power BI Report Server Management Tool
      • Power BI Report Server Monitoring
      • Power BI Report Server vs SQL Server Reporting Services
      • Автоматизация отчетов в Power BI Report Server
  • Учебный курс по Microsoft Power BI
  • Alteryx
    • Alteryx Designer
    • Инструменты Alteryx Designer
    • Alteryx Server
    • Alteryx Analytics Gallery
    • Alteryx. Создание приложения, workflow, ETL
  • Data Engeneering
    • Создание Data Lake
    • Создание Data Warehouse
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы » Учебный курс по Qlik Sense

Загрузка данных из Yandex Direct API в QlikView (преобразование JSON в XML)

В Yandex Direct API имеется инструмент подключения к данным сервиса, чтобы генерировать аналитическую отчетность по маркетинговым кампаниям. Чтобы получить данные, необходимо отправлять на сервер API запросы и сервер возвращает результат в формате JSON. Пока что QlikView не умеет напрямую работать с этим форматом, поэтому одним из выходов является написание конвертора формата JSON в формат XML. Yandex Metrika умеет возвращать формат XML, Yandex Direct пока что отдает данные в JSON.

Ниже приведен пример php-скрипта, который преобразует JSON в XML. Плюс вызывается функция для преобразования результата Yandex Direct API в XML:

<?php

/**

 * Эта вспомогательная функция проверяет, является ли массив

 * ассоциативным - то есть есть ли в нем строковые ключи

 *

 * @param array $array

 * @return bool

 */

function isAssocArray($array) {

if(!is_array($array)) {

return false;

}


if(count($array) < 1) {

return true;

}


foreach($array as $key => $value) {

if(is_numeric($key)) {

return false;

}

}


return true;

}


/**

 * Эта вспомогательная функция генерирует XML-элемент

 *

 * @param mixed  $content Содержимое элемента

 * @param string $parent_tag Имя родительского тега на случай, если

 *

 * @return bool

 */

function generateXmlTagContents($content, $parent_tag = 'WHATTAG') {

if(is_array($content)) {

// Содержимое - массив


if(isAssocArray($content)) {

// Содержимое - массив вида array('id' => ..., 'name' => ...)

return arrayToXml($content);


} else {

// Содержимое - массив вида array(0 => ..., 1 => ...)

$result = '';


foreach($content as $content_value) {

$result .= "<{$parent_tag}>" . generateXmlTagContents($content_value, $parent_tag) . "</{$parent_tag}>";

}


return $result;

}

} else {

// Содержимое - не массив.

$content = (string)$content;


if(preg_match('#[<>&]#', $content)) {

// Если в содержимом есть специальные символы, то его нужно обернуть в <![CDATA[...]]>

return "<![CDATA[{$content}]]>";

}


return $content;

}

}


/**

 * Эта функция генерирует XML на основе массива

 *

 * @param array $array Исходный массив

 * @return string Итоговый XML

 */

function arrayToXml(array $array) {

$result = '';


foreach($array as $tag => $content) {

// Сделать $tag (будущее имя тега) маленькими буквами

$tag = strtolower($tag);


// Эта строка вырезает из имени тега все буквы, кроме

// латинского алфавита, дефиса, подчеркивания, двоеточия

// и цифр (эти символы разрешены в именах тегов XML)

// (ну, не только они, на самом деле, но в основном используются они)

$tag = preg_replace('#[^-_:a-z0-9]#', '', $tag);


if(is_array($content) && isAssocArray($content) === false) {

// Если содержимое - это массив с числовыми ключами, то выводить сам тэг

// сейчас не нужно - у каждого элемента он будет свой, сгенерированный

// функцией generateXmlTagContents()

$result .= generateXmlTagContents($content, $tag);

} else {

// В противном случае это обычный элемент, и мы выводим сам тэг, а

// generateXmlTagContents() займется его содержимым.

$result .= "<{$tag}>" . generateXmlTagContents($content, $tag) . "</{$tag}>";

}


}


return $result;

}


// ---- Ниже пример использования функции arrayToXml() --------------------


$ch = curl_init();


curl_setopt($ch, CURLOPT_URL,'https://api-sandbox.direct.yandex.com/json/v5/keywords');


curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS,'{"method":"get","params":{"SelectionCriteria":{"CampaignIds":[181497,181498,181499]},"FieldNames":["Id","Keyword","State","Status","AdGroupId","CampaignId","Bid","ContextBid","StrategyPriority"] }}');  //Post Fields

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$headers = [


    'POST /json/v5/keywords/ HTTP/1.1',

    'Host: api-sandbox.direct.yandex.com',

    'Authorization: Bearer AQAAAAAJ8KAaAAP5x0wl5UonY0Cfu3KFIyi1aUY',

    'Accept-Language: ru',

    'Client-Login:  iv-shamaev',

    'Content-Type: application/json; charset=utf-8',


];


curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$server_output = curl_exec ($ch);

curl_close ($ch);


$data = json_decode($server_output, true);

$result = arrayToXml($data);


// Указать, что весь последующий вывод - это XML

// Но надо иметь в виду, что до этой команды ничего нельзя выводить.

header('Content-Type: text/xml; charset=utf-8');


// Эта строка нужна в начале каждого XML-файла

echo '<?xml version="1.0" encoding="UTF-8" standalone="no" ?>';


// После нее можно вывести само содержимое

echo $result;

?>

 

Преобразование JSON в XML требуется для интеграции Yandex Direct API с QlikView. Код вставляется в script_name.php на домене и данные загружаются через URL:

http://my_domain_name.ru/script_name.php

 

Еще один пример с обычным массивом JSON, который преобразуется в XML:

<?php

/**

 * Эта вспомогательная функция проверяет, является ли массив

 * ассоциативным - то есть есть ли в нем строковые ключи

 *

 * @param array $array

 * @return bool

 */

function isAssocArray($array) {

if(!is_array($array)) {

return false;

}


if(count($array) < 1) {

return true;

}


foreach($array as $key => $value) {

if(is_numeric($key)) {

return false;

}

}


return true;

}


/**

 * Эта вспомогательная функция генерирует XML-элемент

 *

 * @param mixed  $content Содержимое элемента

 * @param string $parent_tag Имя родительского тега на случай, если

 *

 * @return bool

 */

function generateXmlTagContents($content, $parent_tag = 'WHATTAG') {

if(is_array($content)) {

// Содержимое - массив


if(isAssocArray($content)) {

// Содержимое - массив вида array('id' => ..., 'name' => ...)

return arrayToXml($content);


} else {

// Содержимое - массив вида array(0 => ..., 1 => ...)

$result = '';


foreach($content as $content_value) {

$result .= "<{$parent_tag}>" . generateXmlTagContents($content_value, $parent_tag) . "</{$parent_tag}>";

}


return $result;

}

} else {

// Содержимое - не массив.

$content = (string)$content;


if(preg_match('#[<>&]#', $content)) {

// Если в содержимом есть специальные символы, то его нужно обернуть в <![CDATA[...]]>

return "<![CDATA[{$content}]]>";

}


return $content;

}

}


/**

 * Эта функция генерирует XML на основе массива

 *

 * @param array $array Исходный массив

 * @return string Итоговый XML

 */

function arrayToXml(array $array) {

$result = '';


foreach($array as $tag => $content) {

// Сделать $tag (будущее имя тега) маленькими буквами

$tag = strtolower($tag);


// Эта строка вырезает из имени тега все буквы, кроме

// латинского алфавита, дефиса, подчеркивания, двоеточия

// и цифр (эти символы разрешены в именах тегов XML)

// (ну, не только они, на самом деле, но в основном используются они)

$tag = preg_replace('#[^-_:a-z0-9]#', '', $tag);


if(is_array($content) && isAssocArray($content) === false) {

// Если содержимое - это массив с числовыми ключами, то выводить сам тэг

// сейчас не нужно - у каждого элемента он будет свой, сгенерированный

// функцией generateXmlTagContents()

$result .= generateXmlTagContents($content, $tag);

} else {

// В противном случае это обычный элемент, и мы выводим сам тэг, а

// generateXmlTagContents() займется его содержимым.

$result .= "<{$tag}>" . generateXmlTagContents($content, $tag) . "</{$tag}>";

}


}


return $result;

}


// ---- Ниже пример использования функции arrayToXml() --------------------


$input = '

{

"Result":{

"Product":[

{"Id":181497,"Name":"Product 1"},

{"Id":181498,"Name":"Product 2"},

{"Id":181499,"Name":"Product 3"},

{"Id":181499,"Name":"Pr<od&uct 3"}

]

}

}';


$data = json_decode($input, true);

$result = arrayToXml($data);


// Указать, что весь последующий вывод - это XML

// Но надо иметь в виду, что до этой команды ничего нельзя выводить.

header('Content-Type: text/xml; charset=utf-8');


// Эта строка нужна в начале каждого XML-файла

echo '<?xml version="1.0" encoding="UTF-8" standalone="no" ?>';


// После нее можно вывести само содержимое

echo $result;

?>
 

 

Загружаем данные в QlikView:

 

Получили код для загрузки данных в QlikView из JSON через преобразование в XML:

// Start of [arraytoxml.php] LOAD statements

product:

LOAD id,

    name

FROM [http://my_domain_name.ru/arraytoxml.php] (XmlSimple, Table is [result/product]);

// End of [arraytoxml.php] LOAD statements

 

 

Автор: Иван Шамаев

 

 

Узнать стоимость решенияЗапросить видео презентацию

Запросить видео презентацию Запросить доступ к демо стенду online Узнать стоимость лицензий

Задать вопрос

loading...

Решения

datafinder.ru Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

До 2023 года компания BI Consult обладала официальным партнерским статусом Qlik в России. В настоящий момент деятельность QlikTech на территории России прекращена, BI Consult не имеет партнерских отношений и никаким иным образом более не связана с QlikTech и не предлагает к продаже системы бизнес-анализа QlikView, Qlik Sense и иные продукты бренда Qlik. Все материалы о продукции бренда Qlik на сайте приведены исключительно в описательных целях и для информирования пользователей о существующих в мире системах бизнес-анализа. Для приобретения продукции Qlik необходимо обратиться к правообладателю программного обеспечения QlikTech или дистрибьюторам.

Клиенты

  • Nokia Siemens Networks
    Создание комплекса бизнес-анализа, позволяющего автоматически по расписанию получать показатели работы сети и качества сервисов групп абонентов CS/PS сервисов, выполнять различные виды сегментации, отслеживать пороговые значения и отправлять уведомления; Реализация отображения на географической карте осуществляется при помощи 2-х инструментов: QlikView и Tableau (геоаналитика).
  • Обучение специалистов заказчика по курсам QlikView Designer и Developer, Advanced Topics, Server & Publisher

    Аудит модели данных

  • АДМ

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

  • Разработанное решение позволяет решить следующие задачи:
    Сбор и централизованное хранение отчетных данных бизнес-единиц;
    Оперативное получение отчетности;
    Управление на основе ключевых показателей отчетности.
  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Банки
    • Страхование
    • Фармацевтика
    • Лизинг
    • Логистика
    • Медицина
    • Нефтегазовый сектор
    • Сеть ресторанов
  • BI платформы
    • Qlik Sense
    • QlikView
    • Tableau
    • Microsoft Power BI
    • ATK BiView-1C Коннектор (для Qlik/Tableau/PowerBI)
    • Vizlib Qlik Sense extentions (библиотека экстеншнов)
    • NPrinting
    • Геоаналитика Qlik GeoAnalytics
    • KliqPlanning Suite
    • Qlik WebConnectors
    • QlikView R Коннектор
    • QlikView/Qlik Sense SAP Коннектор
    • Alteryx
    • Qlik Data Catalog
    • Документация ATK BiView
  • Услуги
    • Консалтинг
    • Пилотный проект
    • Поддержка
    • План обучения и сертификации Qlik
    • Бесплатное обучение
    • Учебные курсы
    • Сертификация Qlik
    • Аудит приложений
  • Курсы
    • Учебный курс по Qlik Sense
    • Учебный курс по Tableau
    • Учебный курс по Microsoft Power BI
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс по NPrinting
    • Учебный курс по Azure Databricks
    • Учебный курс по Google BigQuery
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
  • Функциональные решения
    • Продажи
    • Финансы
    • Склад
    • HR
    • S&OP и прогнозная аналитика
    • Внутренний аудит
    • Геоаналитика
    • Категорийный менеджмент
    • Построение хранилища данных
    • Система управления KPI и BSC
    • Управление цепочками поставок
    • Маркетинг
    • Цифровая трансформация
    • Сквозная аналитика
    • Process Mining
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

×

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