Функция In в Qlik Sense – Синтаксис и примеры
Сегодня мы поговорим о функции In в Qlik Sense. По сути, мы используем функцию In для поиска или оценки дат, которые приходятся на определенный год, месяц или квартал. Обычно мы используем такие функции в финансовых вопросах, поэтому вместо обычного года мы рассматриваем финансовый год. Финансовые годы для разных стран разные, некоторые начинаются с апреля, некоторые с октября и т. д.
Итак, давайте рассмотрим функцию In в Qlik Sense.
Функция In Qlik Sense с синтаксисом и примером
i. Функция inyear()
Функция возвращает True, если метка времени содержит тот же год, что и в base_date. Эта функция возвращает тип данных – булевый.
Синтаксис функции In в Qlik Sense:
InYear(timestamp,base_date,period_no[,first_month_of_year])
где timestamp – это дата, записанная вашей системой.
base_date – это введенная дата, на основе которой оценивается год в метке времени.
Используя period_no, вы можете установить смещение для года. Если его значение равно «0», мы можем оценить текущий год и найти его по метке времени. Но если значение – положительное, то берется год после указанного в метке времени, а если это – отрицательное значение, то оценивается год, предшествующий тому, который указан во временной метке.
С помощью параметра «first_month_of_year» вы можете установить месяц, с которого будет начинаться соответствующий год.
Например,
inyear ('25/01/2017', '01/01/2017', 0)
вернет True, потому что год в базовой дате также находится в метке времени.
inyear ('25/01/2017', '01/01/2018', 0)
возвращает False, потому что две даты не совпадают.
inyear ('25/01/2017', '01/01/2017', -1)
возвращает False, потому что -1 показывает, что год в базовой дате должен предшествовать году метки времени.
inyear ('25/01/2017', '01/01/2016', -1)
возвращает True, потому что год в базовой дате на год предшествует году метки времени.
ii. функция inyeartodate()
Эта функция возвращает True, если год в метке времени совпадает с годом, указанным в базовой дате. Тип данных – логический, так как результаты вернутся в виде True (-1) и False (0).
Синтаксис функции In в Qlik Sense в годовом исчислении:
InYearToDate(timestamp,base_date,period_no[,first_month_of_year])
где timestamp – дата, записанная вашей системой.
base_date – введенная дата, на основе которой оценивается год в метке времени.
Используя period_no, вы можете установить смещение для года. Если его значение равно «0», мы можем оценить текущий год и найти его по метке времени. Но если значение – положительное, то берется год после указанного в метке времени, а если значение – отрицательное, то оценивается год, предшествующий тому, который указан во временной метке.
С помощью параметра first_month_of_year вы можете установить месяц, с которого будет начинаться соответствующий год. Если вы не хотите, чтобы год начинался с января, тогда возьмите целые числа от 2 до 12 для февраля и января соответственно.
Например, в приведенном ниже коде даты счета-фактуры были загружены, и с помощью функции inyeartodate мы хотим проверить, попадают ли эти даты в финансовый год, начинающийся с 01.05.2017 и заканчивающийся 31.01.2018.
TempTable: LOAD RecNo() as InvID, * Inline [ InvoiceDate 28/03/2017 10/12/2017 5/2/2018 31/3/2018 19/5/2018 15/9/2018 11/12/2018 2/3/2019 14/5/2019 13/6/2019 ]; InvoiceData: LOAD *, InYearToDate(InvDate, '31/01/2018', 0, 4) AS FiscalYear Resident TempTable; Drop table TempTable;
В результирующей таблице вы получите True (-1), если дата приходится на данный финансовый год, и False (0), если это не так.
InvoiceDate |
FiscalYear |
28/03/2017 |
0(False) |
10/12/2018 |
-1(True) |
5/02/2018 |
0(False) |
31/03/2018 |
0(False) |
19/05/2018 |
0(False) |
15/09/2018 |
0(False) |
11/12/2018 |
0(False) |
2/03/2019 |
0(False) |
14/05/2019 |
0(False) |
13/06/2019 |
0(False) |
iii. функция inquarter()
Функция возвращает True, если год в метке времени находится в квартале, на который приходится год базовой даты
Синтаксис функции inquarter в Qlik Sense:
InQuarter(timestamp,base_date,period_no[,first_month_of_year])
где timestamp – это дата, записанная вашей системой.
base_date – введенная дата, на основе которой оценивается год в метке времени.
Используя period_no, вы можете установить смещение для года. Если его значение равно «0», мы можем оценить текущий год и найти его по метке времени. Но если значение – положительное, то мы берем год после этого в метке времени, а если значение – отрицательное, то мы оцениваем год, предшествующий году метки времени.
С помощью параметра first_month_of_year вы можете установить месяц, с которого будет начинаться соответствующий год. Если вы не хотите, чтобы год начинался с января, возьмите целые числа от 2 до 12 для февраля и января соответственно.
Например, в сценарии, показанном ниже, мы загрузили несколько дат счетов-фактур и хотим с помощью функции inquarter проверить, какие даты приходятся на квартал, совпадающий с базовой датой 31.01.2018 финансового года, начиная с 1 мая 2017 года.
TempTable: LOAD RecNo() as InvID, * Inline [ InvoiceDate 28/03/2017 10/12/2017 5/2/2018 31/3/2018 19/5/2018 15/9/2018 11/12/2018 2/3/2019 14/5/2019 13/6/2019 ]; InvoiceData: LOAD *, InYearToDate(InvDate,'31/01/2018',0,4)AS FiscalYearQuarter Resident TempTable; Drop table TempTable;
В таблице ниже показаны результаты оценки.
InvoiceDate |
FiscalYearQuarter |
28/03/2017 |
0(False) |
10/12/2018 |
0(False) |
5/02/2018 |
-1(True) |
31/03/2018 |
-1(True) |
19/05/2018 |
0(False) |
15/09/2018 |
0(False) |
11/12/2018 |
0(False) |
2/03/2019 |
0(False) |
14/05/2019 |
0(False) |
13/06/2019 |
0(False) |
iv. функция inquartertodate()
Эта функция возвращает True, если год в метке времени попадает в четверть даты, указанной в базовой дате.
Синтаксис функции inquartertodate:
InQuarterToDate(timestamp, base_date, period_no [, first_month_of_year])
Где timestamp – это дата, записанная вашей системой.
base_date – это введенная дата, на основе которой оценивается год в метке времени.
Используя period_no, вы можете установить смещение для года. Если его значение равно «0», мы можем оценить текущий год и найти его по метке времени. Но если значение – положительное, то мы берем год после этого в метке времени, а если значение – отрицательное, мы оцениваем год, предшествующий году метки времени.
С помощью параметра first_month_of_year вы можете установить месяц, с которого будет начинаться соответствующий год. Если вы не хотите, чтобы год начинался с января, тогда возьмите целые числа от 2 до 12 для февраля и января соответственно.
Например, в загруженном ниже фрагменте кода есть даты выставления счетов, которые будут проверены функцией, поскольку они попадают в четвертый квартал (здесь финансовый год начинается с 1 мая 2017 года, и это делает май, июнь, июль первым кварталом) года, или нет. Базовая дата установлена в 28.02.2018.
TempTable: LOAD RecNo() as InvID, * Inline [ InvoiceDate 28/03/2017 10/12/2017 5/2/2018 31/3/2018 19/5/2018 15/9/2018 11/12/2018 2/3/2019 14/5/2019 13/6/2019 ]; InvoiceData: LOAD *, InYearToDate(InvDate,'28/02/2018',0,4)AS FiscyearQuarterdate Resident TempTable; Drop table TempTable;
Итоговая таблица дает только дату 5/02/2018, которая удовлетворяет данному критерию.
InvoiceDate |
FiscyearQuarterdate |
28/03/2017 |
0(False) |
10/12/2018 |
0(False) |
5/02/2018 |
-1(True) |
31/03/2018 |
0(False) |
19/05/2018 |
0(False) |
15/09/2018 |
0(False) |
11/12/2018 |
0(False) |
2/03/2019 |
0(False) |
14/05/2019 |
0(False) |
13/06/2019 |
0(False) |
v. функция inmonth()
Функция возвращает True или -1, если месяц в метке времени совпадает с месяцем в данной базовой дате.
Синтаксис функции inmonth в Qlik Sense:
InMonth(timestamp,base_date,period_no[,first_month_of_year])
где timestamp – это дата, записанная вашей системой.
base_date – введенная дата, на основе которой оценивается год в метке времени.
Используя period_no, вы можете установить смещение для года. Если его значение равно «0», мы можем оценить текущий год и найти его по метке времени. Но если это значение положительное, мы берем год после этого в метке времени, а если значение – отрицательное, то мы оцениваем год, предшествующий году метки времени.
Параметр first_month_of_year не является обязательным.
Например,
inmonth (’25/01/2018′, ’01/01/2018′, 0) возвращает True, поскольку месяцы в метке времени и базовой дате совпадают.
inmonth(’25/01/2018′, ’01/04/2018′, 0) возвращает False, потому что месяцы разные.
vi. функция inmonthtodate()
Эта функция возвращает True, если дата в метке времени находится в том же месяце, что и базовая дата.
Синтаксис функции inmonthtodate в Qlik Sense:
InMonthToDate(timestamp, base_date, period_no)
где timestamp – дата, записанная вашей системой.
base_date – введенная дата, на основе которой оценивается год в метке времени.
Используя period_no, вы можете установить смещение для года. Если его значение равно «0», мы можем оценить текущий год и найти его по метке времени. Но если это значение – положительное, то мы берем год после этого в метке времени, а если значение – отрицательное, то мы оцениваем год, предшествующий году метки времени.
Например,
- inmonthtodate (’25/01/2013′, ’25/01/2013′, 0) возвращает True, потому что и в метке времени и в базовой дате месяцы и дни совпадают.
- inmonthtodate (’25/01/2013′, ’24/01/2013′, 0) возвращает False, поскольку даты в обоих случаях не совпадают.
- inmonthtodate (’25/01/2013′, ’28/02/2013′, -1) возвращает True, потому что для параметра period_No установлено значение «-1», которое оценивает месяц, предшествующий тому, что указано в базовой дате. Ее, 02 задается в базовой дате, но выражение оценивается для 01, что соответствует его значению метки времени.
vii. Функция inmonths()
Эта функция возвращает значение True, если месяц метки времени попадает в тот же месяц или в тот же двухмесячный, квартальный, третичный или полугодовой (шесть месяцев) период, на который приходится базовая дата.
Синтаксис функции inmonths:
InMonths(n_months, timestamp, base_date, period_no [, first_month_of_year])
Где timestamp – это дата, записанная вашей системой.
N_months устанавливает интервал месяца, т.е. «1» для интервала в один месяц (inmonth ()), «2» для двухмесячного интервала, «3» для трехмесячного интервала (inquarter ()), «4» для третичного (четырехмесячный интервал) и «6» для полугодия или шестимесячного интервала.
base_date – введенная дата, на основе которой оценивается год в метке времени.
Используя period_no, вы можете установить смещение для года. Если его значение равно «0», мы можем оценить текущий год и найти его по метке времени. Но если значение – положительное, то мы берем год после этого в метке времени, а если значение – отрицательное, то мы оцениваем год, предшествующий году метки времени.
С помощью параметра first_month_of_year вы можете установить месяц, с которого будет начинаться соответствующий год. Если вы не хотите, чтобы год начинался с января, тогда возьмите целые числа от 2 до 12 для февраля и января соответственно.
Например,
inmonths(4, ’25/01/2018′, ’25/04/2018′, 0) возвращает True, потому что интервал месяца установлен на «4», и поэтому базовая дата 25.04.2018 должна находиться между интервалом времени в четыре месяцев, то есть с 01.01.2018 по 30.04.2018.
viii. Функция Inmonthstodate()
Функция возвращает True, если месяц метки времени попадает в тот же месяц или в тот же двухмесячный, квартальный, третичный или полугодовой (шесть месяцев) период, на который приходится последняя миллисекунда базовой даты.
Синтаксис функции inmonthtodate в Qlik Sense:
InMonths(n_months, timestamp, base_date, period_no[, first_month_of_year ])
где timestamp – дата, записанная вашей системой.
N_months устанавливает месячный интервал, т.е. «1» для интервала в один месяц (inmonth ()), «2» для двухмесячного интервала, «3» для трехмесячного интервала (inquarter ()), «4» для третичного (четырехмесячный интервал) и «6» для полугодия или шестимесячного интервала.
base_date – это введенная дата, на основе которой оценивается год в метке времени.
Используя period_no, вы можете установить смещение для года. Если его значение равно «0», мы можем оценить текущий год и найти его по метке времени. Но если это значение положительное, то мы берем год после этого в метке времени, а если значение – отрицательное, то мы оцениваем год, предшествующий году метки времени.
С помощью параметра first_month_of_year вы можете установить месяц, с которого будет начинаться соответствующий год. Если вы не хотите, чтобы год начинался с января, тогда возьмите целые числа от 2 до 12 для февраля и января соответственно.
Например,
- inmonthstodate(4, ’25/01/2013′, ’25/04/2013′, 0) возвращает True, поскольку дата на временной метке попадает в интервал в четыре месяца.
- inmonthstodate(4, ’26/04/2013′, ’25/04/2006′, 0) возвращает False, потому что годы разные и смещение периода не задано.
ix. Функция Inweek()
Эта функция возвращает True, если дата, записанная во временной метке, приходится на ту же неделю, что и указанная в базовой дате.
Синтаксис функции Inweek:
InWeek(timestamp, base_date, period_no[, first_week_day])
где timestamp – дата, записанная вашей системой.
base_date – это введенная дата, на основе которой оценивается год в метке времени.
Используя period_no, вы можете установить смещение для года. Если его значение равно 0, мы можем оценить текущий год и найти его по метке времени. Но если он положительный, то берется год после указанного в метке времени, а если значение – отрицательное, то оценивается год, предшествующий тому, который указан во временной метке.
С помощью параметра first_month_of_year вы можете установить месяц, с которого будет начинаться соответствующий год. Если вы не хотите, чтобы год начинался с января, тогда возьмите целые числа от 2 до 12 для февраля и января соответственно.
Ознакомьтесь с условными функциями Qlik Sense
Например,
inweek (‘5/11/2018′,’9/11/2018’,0) возвращает True, поскольку обе даты приходятся на одну и ту же неделю.
inweek (’12/11/2018′,’1/11/2018′,0) возвращает значение False, поскольку обе даты не совпадают с одной и той же неделей.
x. Функция Inweektodate()
Эта функция возвращает True, если дата, записанная во временной метке, приходится на ту же неделю, что и в базовой дате, до последней миллисекунды.
Синтаксис функции inweektodate:
InWeek(timestamp, base_date, period_no[, first_week_day])
где timestamp – дата, записанная вашей системой.
base_date – это введенная дата, на основе которой оценивается год в метке времени.
Используя period_no, вы можете установить смещение для года. Если его значение равно «0», мы можем оценить текущий год и найти его по метке времени. Но если это значение – положительное, то мы берем год после этого в метке времени, а если значение – отрицательное, то мы оцениваем год, предшествующий году метки времени.
С помощью параметра first_month_of_year вы можете установить месяц, с которого будет начинаться соответствующий год. Если вы не хотите, чтобы год начинался с января, тогда возьмите целые числа от 2 до 12 для февраля и января соответственно.
Например,
inweek ('12/01/2006','12/01/2006',0)
возвращает True, потому что обе даты приходятся на одну и ту же неделю.
inweek ('12/01/2006','11/11/2018',0)
возвращает False, потому что обе даты не совпадают с одной и той же неделей.
xi. Функция Inlunarweek()
Эта функция возвращает True, если неделя в метке времени совпадает с лунной неделей и базовой датой. Лунные недели – это недели, которые начинаются с 1 января как первого дня недели.
Синтаксис функции inlunarweek:
InLunarWeek(timestamp,base_date,period_no[,first_week_day])
где timestamp – дата, записанная вашей системой.
base_date – это введенная дата, на основе которой оценивается год в метке времени.
Используя period_no, вы можете установить смещение для года. Если его значение равно «0», мы можем оценить текущий год и найти его по метке времени. Но если это значение – положительное, то мы берем год после этого в метке времени, а если значение – отрицательное, то мы оцениваем год, предшествующий году метки времени.
С помощью параметра first_month_of_year вы можете установить месяц, с которого будет начинаться соответствующий год. Если вы не хотите, чтобы год начинался с января, тогда возьмите целые числа от 2 до 12 для февраля и января соответственно.
inlunarweek(’12/01/2017′,’14/01/2017′,0) возвращает True. Поскольку значение отметки времени, 01.12.2013 выпадает на неделю с 08.01.2017 по 14.01.2017.
xii. Функция Inlunarweektodate()
Эта функция возвращает True, если неделя в метке времени совпадает с лунной неделей и до базовой даты, до ее последней миллисекунды. Лунные недели – это недели, которые начинаются с 1 января как первого дня недели.
Синтаксис Inlunarweektodate:
InLunarWeek(timestamp,base_date,period_no[,first_week_day])
где timestamp – дата, записанная вашей системой.
base_date – это введенная дата, на основе которой оценивается год в метке времени.
Используя period_no, вы можете установить смещение для года. Если его значение равно 0, мы можем оценить текущий год и найти его по метке времени. Но если он положительный, то мы берем год после этого в метке времени, а если значение – отрицательное, то мы оцениваем год, предшествующий году метки времени.
С помощью параметра first_month_of_year вы можете установить месяц, с которого будет начинаться соответствующий год. Если вы не хотите, чтобы год начинался с января, тогда возьмите целые числа от 2 до 12 для февраля и января соответственно.
inlunarweek(’12/01/2017′,’14/01/2017′,0) возвращает True. Поскольку значение отметки времени, 01.12.2013 выпадает на неделю с 08.01.2017 по 14.01.2017.
xiii. Функция Inday()
Функция возвращает True, если день в метке времени также лежит в метке base_timestamp.
Синтаксис функции Inday в Qlik sense:
InDay(timestamp, base_timestamp, period_no[, day_start])
Где timestamp – это время и дата, записанные системой в определенный момент.
base_timestamp – это время и дата, которые вы хотите сравнить с отметкой времени.
period_no помогает вам установить смещение для дня, который вам нужно оценить. Вы используете «0», если хотите оценить день, указанный в base_timestamp. Мы используем отрицательное значение (например, -1, -2), чтобы рассматривать дни, предшествующие тому, что у base_timestamp, а положительное значение рассматривает дни после или последующие дни, указанные в base_timestamp.
В параметре «day_start» вы можете установить время начала дня как дробное значение. Например, 0,125 для 3 часов ночи и т. д. Вы делаете это, когда не хотите начинать день в 12 часов ночи.
Например,
inday (’12/01/2017 12:23:00′, ’12/01/2017 00:00:00′, 0) возвращает True, поскольку обе даты обозначают один и тот же день.
xiv. Функция Indaytotime()
Эта функция возвращает True, если день в метке времени лежит в дневной части base_timestamp, а также до последней миллисекунды времени, до которой день не меняется.
Синтаксис функции indaytotime:
InDayToTime(timestamp, base_timestamp, period_no[, day_start])
Где timestamp – это время и дата, записанные системой в определенный момент.
base_timestamp – это время и дата, которые вы хотите сравнить с отметкой времени.
period_no помогает вам установить смещение для дня, который вам нужно оценить. Мы используем «0», если хотим оценить день, указанный в base_timestamp. Мы используем отрицательное значение (например, -1, -2), чтобы рассматривать дни, предшествующие тому, что у base_timestamp, а положительное значение рассматривает дни после или последующие дни, указанные в base_timestamp.
В параметре day_start вы можете установить время начала дня как дробное значение. Например, 0,125 для 3 часов ночи и т. д. Мы делаем это, когда не хотим начинать день в 12 часов ночи.
Например,
indaytotime (’12/01/2017 12:23:00′, ’12/01/2017 23:59:00′, 0) возвращает True, потому что время в обеих временных метках относится к одному и тому же дню.