Неофициальный форум пользователей Qlik Sense & Qlikview

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: dbf_usr от 20 января 2017, 02:41:03

Название: Month и timestamp without time zone
Отправлено: dbf_usr от 20 января 2017, 02:41:03
Тяну данные из PostgreSQL, там поле типа "timestamp without time zone".
Нужно получить название месяцев, что бы они сортировались не по алфавиту, а по календарю. то есть просто заменить кейсом на на названия - не вариант.
Пробую так:
Month(order_client.date_order) As "Месяц",
Получаю ошибку: ErrorMsg: ERROR: function month(timestamp without time zone) does not exist;
Кто сталкивался и как исправить?
Вот пробую так (подсовываю отформатированую дату):
Month(date#(order_client.date_order, 'DD.MM.YYYY')) As "Месяц"
Но в итоге все равно ошибка (он почему то функцию принимает за название поля):
SQL##f - SqlState: 42703, ErrorCode: 7, ErrorMsg: ERROR: column "date" does not exist;
Error while executing the query
Название: Re: Month и timestamp without time zone
Отправлено: admin от 20 января 2017, 09:12:55
Вы это делаете в Select?
Используйте преобразование полей в операторе предшествующей загрузки
load date(...)..;
select from;
Все что в селекте идет через соединение к базе через драйвер, поэтому в нем пишем только понятное для конкретной СУБД.
Название: Re: Month и timestamp without time zone
Отправлено: dbf_usr от 20 января 2017, 01:03:41
Да, в SELECT делаю.
Я подключаюсь к базе и Селектами выдергиваю несколько таблиц, поля по которым они связаны представляются одинаковыми и сам Клик их связывает.
вот могу получить или номер месяца

extract(MONTH from order_client.date_order) As "Месяц",

или заменить его на название

CASE
    WHEN extract(MONTH from order_client.date_order)=1 THEN 'январь'
    WHEN extract(MONTH from order_client.date_order)=2 THEN 'февраль'
    WHEN extract(MONTH from order_client.date_order)=3 THEN 'март'
    WHEN extract(MONTH from order_client.date_order)=4 THEN 'апрель'
    WHEN extract(MONTH from order_client.date_order)=5 THEN 'май'
    WHEN extract(MONTH from order_client.date_order)=6 THEN 'июнь'
    WHEN extract(MONTH from order_client.date_order)=7 THEN 'июль'
    WHEN extract(MONTH from order_client.date_order)=8 THEN 'август'
    WHEN extract(MONTH from order_client.date_order)=9 THEN 'сентябрь'
    WHEN extract(MONTH from order_client.date_order)=10 THEN 'октябрь'
    WHEN extract(MONTH from order_client.date_order)=11 THEN 'ноябрь'
    WHEN extract(MONTH from order_client.date_order)=12 THEN 'декабрь'   
    ELSE '0'
  END AS "Месяц", 

замена на название не подходит - неправильно сортируются - графики, не верный и порядок месяцев в таблицах.
Название: Re: Month и timestamp without time zone
Отправлено: admin от 20 января 2017, 01:27:52
Дату возьмите, и с ней уже будете работать средствами клика.
Название: Re: Month и timestamp without time zone
Отправлено: dbf_usr от 22 января 2017, 03:29:51
Решил так сначала выгружаю в формате простой даты:
order_client.date_order::date As "Дата чека",
А потом в пост обработке делаю преобразование:
order_client:
Load *,
month("Дата чека") as Мес,
WeekDay("Дата чека") as День 
From order_client.qvd (qvd);

Может кому-то поможет.
Спасибо за подсказку о том как лучше реализовать.