Преобразование даты в Qlikivew и Qlik Sense

Автор asdlegioner, мая 31, 2015, 06:35:30 pm

« предыдущая - следующая »

asdlegioner

мая 31, 2015, 06:35:30 pm Последнее редактирование: июня 14, 2015, 03:17:35 pm от admin
Подскажите пожалуйста как можно преобразовать текущий вид даты 6 мая 2015 в текстовом формате в такой вид 06.05.2015.

admin

Вечер добрый.
Что мы имеем? Имеем тестовую строку.
Нам надо ее разобрать на три составляющие.
Для расчленения используйте SubField(), в качестве разделителя - пробел, при это крайние пробелы надо предварительно убрать.
Для формирования формата даты - MakeDate()
Для перевода текстового обозначения месяца в числовое используйте маппинг.
ApplyMap()  можно использовать в качестве параметра для MakeDate().

admin

Кстати, вопрос по скрипту или переменной?
Если по скрипту, то вот пример:


Месяца:
Mapping LOAD * INLINE [
    F1, F2
    апрель, 4
    апреля, 4
    апр, 4
    май, 5
    июнь, 6
    июн, 6
];

LOAD *,
MakeDate(SubField(F1,' ', 3),ApplyMap('Месяца',SubField(F1,' ',2)),SubField(F1,' ',1)) As [Дата]
INLINE [
    F1
    10 апреля 2015
    3 апр 2015
    6 май 2015
];

asdlegioner

июня 09, 2015, 03:45:09 pm #3 Последнее редактирование: июня 09, 2015, 03:58:43 pm от asdlegioner
Спасибо. Не подскажите как преобразовать такой вид записи в скрипте 2015/06/09 10:59:00 к 09.06.20015

R Dmitry

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

kvv

Добрый день.
Попробуйте вот так:
date(ВАША ДАТА, 'DD.MM.YYYY')

asdlegioner

Цитата: R Dmitry от июня 09, 2015, 05:39:52 pm
А каким образом тянете данные и каков их источник?
Если из какой нибудь базы, то можно использовать функции самой БД для конвертации даты.


Источник excel

asdlegioner

Цитата: asdlegioner от июня 09, 2015, 05:54:37 pm
Цитата: R Dmitry от июня 09, 2015, 05:39:52 pm
А каким образом тянете данные и каков их источник?
Если из какой нибудь базы, то можно использовать функции самой БД для конвертации даты.


Источник excel


Так не получается. Я отсек все лишнее таким способом =left(Дата,10) получилось так 2015/06/09 теперь не знаю как убрать наклонною черту и перевернуть дату.

admin

Привет.
Если данные грузятся из Excel и в таблицах все сделано стандартно, то есть дата - как дата.
То проблем нет никаких, просто пишем date(ceil(Дата)) as Дата и будет дата по формату без минут и секунд.
Дата хранится в числовом виде. Целые - даты, дробное значение - время.
Как бы не отображалось в Excel, для клика отдается в числовом виде , а тот опять уже делает формат по умолчанию, и время прячет. Поэтому и используем округление ceil()

asdlegioner

Цитата: admin от июня 09, 2015, 07:35:09 pm
Привет.
Если данные грузятся из Excel и в таблицах все сделано стандартно, то есть дата - как дата.
То проблем нет никаких, просто пишем date(ceil(Дата)) as Дата и будет дата по формату без минут и секунд.
Дата хранится в числовом виде. Целые - даты, дробное значение - время.
Как бы не отображалось в Excel, для клика отдается в числовом виде , а тот опять уже делает формат по умолчанию, и время прячет. Поэтому и используем округление ceil()


Не получилось привести(

admin

Если текстовую строку требуется преобразовать в формат Даты, то можно использовать MakeDate
http://qlikview-forum.ru/qvf/index.php/topic,762.msg1564.html#msg1564

Eva

Добрый день,коллеги! Если данные грузятся из Excel  и месяца в виде январь,февраль,март. Это значит только мэппинг поможет в числовой перевести? Больше ничего?

kvv

Добрый день.
Интересный вопрос - и легкий и сложный одновременно.
Пока, пришел к выводу, что только Меппинг или if может решить данную задачу.
Меппинг более правильный вариант, отрабатывать будет на много быстрее чем if.

kvv

декабря 15, 2015, 04:40:24 pm #13 Последнее редактирование: декабря 15, 2015, 05:05:36 pm от kvv
Можно попробовать вот такое решение:
SET LongMonthNames='январь;февраль;март;апрель;май;июнь;июль;август;сентябрь;октябрь;ноябрь;декабрь';

Data:
LOAD * Inline [
NN, MONTH
1, январь
2, февраль
];

Store * from Data into Data.qvd (qvd);
DROP Table Data;

Data:
LOAD NN,
     Mid((Date(Date#('01 ' & MONTH & ' 2015', 'DD MMMM YYYY'))), 4, 2) as MONTH
FROM Data.qvd (qvd);


Правда, вариант с Меппингом более гибкий и лучше.

Рейтинг@Mail.ru Яндекс.Метрика