# weekstart — функция скриптa и диаграммы

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

Синтаксис:

WeekStart(timestamp [, period\_no [, first\_week\_day ]])

Возвращаемые типы данных: двойное значение

Функция `weekstart()` определяет, на какой день недели приходится дата. Затем она возвращает метку времени в формате даты для первой миллисекунды этой недели. Первый день недели определяется переменной среды `FirstWeekDay`. Однако ее можно переопределить с помощью аргумента `first_week_day` в функции `weekstart()`.

Аргументы

| Аргумент | Описание |
| --- | --- |
| timestamp | Дата или метка времени для вычисления. |
| period\_no | shift — целое число, где 0 обозначает неделю, включающую значение, указанное в поле date. Отрицательные значения, заданные в поле shift, означают предшествующие недели, положительные — последующие. |
| first\_week\_day | Указывает день начала недели. Если не указано, используется значение переменной FirstWeekDay.<br><br>Возможные значения first\_week\_day: 0 — понедельник, 1 — вторник, 2 — среда, 3 — четверг, 4 — пятница, 5 — суббота и 6 — воскресенье.<br><br>Для получения дополнительной информации о системной переменной см. [FirstWeekDay](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/FirstWeekDay.htm). |

## Когда это следует использовать

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

В следующих примерах используется:

```
SET FirstWeekDay=0;
```

Примеры функции

| Пример | Результат |
| --- | --- |
| `weekstart('01/12/2013')` | Возвращает 01/07/2013. |
| `weekstart('01/12/2013', -1 )` | Возвращает 11/31/2012. |
| `weekstart('01/12/2013', 0, 1)` | Возвращает 01/08/2013. |

## Региональные настройки

Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе `SET DateFormat` скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.

Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.

Примеры:

Если требуется использовать параметры ISO для недель и номеров недель, убедитесь, что в скрипте содержится следующее:

```
Set DateFormat   ='YYYY-MM-DD'; 
Set FirstWeekDay =0;    // Monday as first week day
Set BrokenWeeks  =0;    //(use unbroken weeks)
Set ReferenceDay =4;    // Jan 4th is always in week 1
```

Если требуется использовать параметры US, убедитесь, что в скрипте содержится следующее:

```
Set DateFormat   ='M/D/YYYY';
Set FirstWeekDay =6;    // Sunday as first week day
Set BrokenWeeks  =1;    //(use broken weeks)
Set ReferenceDay =1;    // Jan 1st is always in week 1
```

Приведенные выше примеры дают следующие результаты функции weekstart():

Пример функции Weekstart

| Date | Начало недели ISO | Начало недели US |
| --- | --- | --- |
| Sat 2020 Dec 26 | 2020-12-21 | 12/20/2020 |
| Sun 2020 Dec 27 | 2020-12-21 | 12/27/2020 |
| Mon 2020 Dec 28 | 2020-12-28 | 12/27/2020 |
| Tue 2020 Dec 29 | 2020-12-28 | 12/27/2020 |
| Wed 2020 Dec 30 | 2020-12-28 | 12/27/2020 |
| Thu 2020 Dec 31 | 2020-12-28 | 12/27/2020 |
| Fri 2021 Jan 1 | 2020-12-28 | 12/27/2020 |
| Sat 2021 Jan 2 | 2020-12-28 | 12/27/2020 |
| Sun 2021 Jan 3 | 2020-12-28 | 1/3/2021 |
| Mon 2021 Jan 4 | 2021-01-04 | 1/3/2021 |
| Tue 2021 Jan 5 | 2021-01-04 | 1/3/2021 |

Примечание к информацииНачало недели выпадает на понедельник в столбце ISO и на воскресенье в столбце US.

## Пример 1. Без дополнительных аргументов

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/weekstart.htm)

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.

Скрипт загрузки содержит следующее:

* Набор данных, содержащий набор транзакций за 2022 год, который загружается в таблицу под именем Transactions.

* Поле даты было предоставлено в формате системной переменной DateFormat (MM/DD/YYYY).

* Создание поля start\_of\_week, возвращающего метку времени начала недели, в течение которой совершены транзакции.

Скрипт загрузки

```
SET FirstWeekDay=6;

Transactions:
    Load
        *,
        weekstart(date) as start_of_week,
        timestamp(weekstart(date)) as start_of_week_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* date

* start\_of\_week

* start\_of\_week\_timestamp

Результирующая таблица

| date | start\_of\_week | start\_of\_week\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/02/2022 | 1/2/2022 12:00:00 AM |
| 1/19/2022 | 01/16/2022 | 1/16/2022 12:00:00 AM |
| 2/5/2022 | 01/30/2022 | 1/30/2022 12:00:00 AM |
| 2/28/2022 | 02/27/2022 | 2/27/2022 12:00:00 AM |
| 3/16/2022 | 03/13/2022 | 3/13/2022 12:00:00 AM |
| 4/1/2022 | 03/27/2022 | 3/27/2022 12:00:00 AM |
| 5/7/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 5/16/2022 | 05/15/2022 | 5/15/2022 12:00:00 AM |
| 6/15/2022 | 06/12/2022 | 6/12/2022 12:00:00 AM |
| 6/26/2022 | 06/26/2022 | 6/26/2022 12:00:00 AM |
| 7/9/2022 | 07/03/2022 | 7/3/2022 12:00:00 AM |
| 7/22/2022 | 07/17/2022 | 7/17/2022 12:00:00 AM |
| 7/23/2022 | 07/17/2022 | 7/17/2022 12:00:00 AM |
| 7/27/2022 | 07/24/2022 | 7/24/2022 12:00:00 AM |
| 8/2/2022 | 07/31/2022 | 7/31/2022 12:00:00 AM |
| 8/8/2022 | 08/07/2022 | 8/7/2022 12:00:00 AM |
| 8/19/2022 | 08/14/2022 | 8/14/2022 12:00:00 AM |
| 9/26/2022 | 09/25/2022 | 9/25/2022 12:00:00 AM |
| 10/14/2022 | 10/09/2022 | 10/9/2022 12:00:00 AM |
| 10/29/2022 | 10/23/2022 | 10/23/2022 12:00:00 AM |

Поле start\_of\_week создано предшествующим оператором load с использованием функции weekstart(), где в качестве аргумента функции передано поле даты.

Функция weekstart() определяет, к какой неделе относится значение даты, и возвращает метку времени для первой миллисекунды этой недели.

Диаграмма функции weekstart(), пример без дополнительных аргументов

Диаграмма функции weekstart(), пример без дополнительных аргументов

Диаграмма функции weekstart()weekstart(), пример без дополнительных аргументов![Диаграмма, демонстрирующая, как функция weekstart преобразует дату каждой транзакции в метку времени первой миллисекунды недели, в течение которой совершена эта транзакция.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekstart-examples-no-add-arg.png)

Транзакция 8191 совершена 5 февраля. Системная переменная FirstWeekDay задает в качестве первого дня недели воскресенье. Функция weekstart() определяет, что первой субботой перед 5 февраля и, следовательно, первым днем недели, является 30 января. Таким образом, значение start\_of\_week для этой транзакции возвращает первую миллисекунду этого дня, то есть 00:00:00 (12:00:00 AM) 30 января.

## Пример 2. Скрипт period\_no

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/weekstart.htm)

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.

Скрипт загрузки содержит следующее:

* Используется тот же набор данных и сценарий, что в первом примере.

* Создание поля previous\_week\_start, возвращающего метку времени начала квартала, который предшествует совершению транзакции.

Скрипт загрузки

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        weekstart(date,-1) as previous_week_start,
        timestamp(weekstart(date,-1)) as previous_week_start_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* date

* previous\_week\_start

* previous\_week\_start\_timestamp

Результирующая таблица

| date | previous\_week\_start | previous\_week\_start\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 12/26/2021 | 12/26/2021 12:00:00 AM |
| 1/19/2022 | 01/09/2022 | 1/9/2022 12:00:00 AM |
| 2/5/2022 | 01/23/2022 | 1/23/2022 12:00:00 AM |
| 2/28/2022 | 02/20/2022 | 2/20/2022 12:00:00 AM |
| 3/16/2022 | 03/06/2022 | 3/6/2022 12:00:00 AM |
| 4/1/2022 | 03/20/2022 | 3/20/2022 12:00:00 AM |
| 5/7/2022 | 04/24/2022 | 4/24/2022 12:00:00 AM |
| 5/16/2022 | 05/08/2022 | 5/8/2022 12:00:00 AM |
| 6/15/2022 | 06/05/2022 | 6/5/2022 12:00:00 AM |
| 6/26/2022 | 06/19/2022 | 6/19/2022 12:00:00 AM |
| 7/9/2022 | 06/26/2022 | 6/26/2022 12:00:00 AM |
| 7/22/2022 | 07/10/2022 | 7/10/2022 12:00:00 AM |
| 7/23/2022 | 07/10/2022 | 7/10/2022 12:00:00 AM |
| 7/27/2022 | 07/17/2022 | 7/17/2022 12:00:00 AM |
| 8/2/2022 | 07/24/2022 | 7/24/2022 12:00:00 AM |
| 8/8/2022 | 07/31/2022 | 7/31/2022 12:00:00 AM |
| 8/19/2022 | 08/07/2022 | 8/7/2022 12:00:00 AM |
| 9/26/2022 | 09/18/2022 | 9/18/2022 12:00:00 AM |
| 10/14/2022 | 10/02/2022 | 10/2/2022 12:00:00 AM |
| 10/29/2022 | 10/16/2022 | 10/16/2022 12:00:00 AM |

В этом случае, так как в качестве аргумента смещения в функции weekstart() использовалось period\_no = -1, функция сначала определяет неделю, в течение которой совершаются транзакции. Затем она возврващается на неделю назад и определяет первую миллисекунду этой недели.

Диаграмма функции weekstart(), пример с аргументом period\_no

Диаграмма функции weekstart(), пример с аргументом period\_no

Диаграмма функции weekstart()weekstart(), пример с аргументом period\_no![Диаграмма, демонстрирующая, как функция weekstart преобразует дату каждой транзакции в метку времени первой миллисекунды недели, в течение которой совершена эта транзакция.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekstart-examples-period-no.png)

Транзакция 8196 совершена 15 июня. Функция weekstart() определяет, что неделя начинается 12 июня. Таким образом, предыдущая неделя началась 5 июня в 00:00:00 (12:00:00 AM). Именно это значение возвращается для поля previous\_week\_start.

## Пример 3. Аргумент first\_week\_day

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/weekstart.htm)

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.

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

Скрипт загрузки

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        weekstart(date,0,1) as start_of_week,
        timestamp(weekstart(date,0,1)) as start_of_week_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* date

* start\_of\_week

* start\_of\_week\_timestamp

Результирующая таблица

| date | start\_of\_week | start\_of\_week\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/04/2022 | 1/4/2022 12:00:00 AM |
| 1/19/2022 | 01/18/2022 | 1/18/2022 12:00:00 AM |
| 2/5/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 2/28/2022 | 02/22/2022 | 2/22/2022 12:00:00 AM |
| 3/16/2022 | 03/15/2022 | 3/15/2022 12:00:00 AM |
| 4/1/2022 | 03/29/2022 | 3/29/2022 12:00:00 AM |
| 5/7/2022 | 05/03/2022 | 5/3/2022 12:00:00 AM |
| 5/16/2022 | 05/10/2022 | 5/10/2022 12:00:00 AM |
| 6/15/2022 | 06/14/2022 | 6/14/2022 12:00:00 AM |
| 6/26/2022 | 06/21/2022 | 6/21/2022 12:00:00 AM |
| 7/9/2022 | 07/05/2022 | 7/5/2022 12:00:00 AM |
| 7/22/2022 | 07/19/2022 | 7/19/2022 12:00:00 AM |
| 7/23/2022 | 07/19/2022 | 7/19/2022 12:00:00 AM |
| 7/27/2022 | 07/26/2022 | 7/26/2022 12:00:00 AM |
| 8/2/2022 | 08/02/2022 | 8/2/2022 12:00:00 AM |
| 8/8/2022 | 08/02/2022 | 8/2/2022 12:00:00 AM |
| 8/19/2022 | 08/16/2022 | 8/16/2022 12:00:00 AM |
| 9/26/2022 | 09/20/2022 | 9/20/2022 12:00:00 AM |
| 10/14/2022 | 10/11/2022 | 10/11/2022 12:00:00 AM |
| 10/29/2022 | 10/25/2022 | 10/25/2022 12:00:00 AM |

В этом случае, поскольку аргумент first\_week\_date =1 используется в функции weekstart(), в качестве первого дня недели задан вторник.

Диаграмма функции weekstart() , пример с аргументом first\_week\_day

Диаграмма функции weekstart() , пример с аргументом first\_week\_day

Диаграмма функции weekstart()weekstart() , пример с аргументом first\_week\_day![Диаграмма, демонстрирующая, как функция weekstart преобразует дату каждой транзакции в метку времени первой миллисекунды недели, в течение которой совершена эта транзакция.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekstart-examples-first-week-day.png)

Транзакция 8191 совершена 5 февраля. Функция weekstart() определяет, что первым вторником перед этой датой и, следовательно, первым днем недели является 1 февраля, и возвращается значение 00:00:00 (12:00:00 AM) 6 февраля.

## Пример 4. Пример объекта диаграммы

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/weekstart.htm)

#### Скрипт загрузки и выражение диаграммы

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.

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

Однако в этом примере в приложение загружается неизмененный набор данных. Расчет, возвращающий метку времени начала недели, в течение которой совершены транзакции, создается как мера в объекте диаграммы в приложении.

Скрипт загрузки

```
Transactions:

Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение: date.

Чтобы рассчитать начало недели, когда совершена транзакция, добавьте следующие меры:

* =weekstart(date)

* =timestamp(weekstart(date))

Результирующая таблица

| date | start\_of\_week | start\_of\_week\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/02/2022 | 1/2/2022 12:00:00 AM |
| 1/19/2022 | 01/16/2022 | 1/16/2022 12:00:00 AM |
| 2/5/2022 | 01/30/2022 | 1/30/2022 12:00:00 AM |
| 2/28/2022 | 02/27/2022 | 2/27/2022 12:00:00 AM |
| 3/16/2022 | 03/13/2022 | 3/13/2022 12:00:00 AM |
| 4/1/2022 | 03/27/2022 | 3/27/2022 12:00:00 AM |
| 5/7/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 5/16/2022 | 05/15/2022 | 5/15/2022 12:00:00 AM |
| 6/15/2022 | 06/12/2022 | 6/12/2022 12:00:00 AM |
| 6/26/2022 | 06/26/2022 | 6/26/2022 12:00:00 AM |
| 7/9/2022 | 07/03/2022 | 7/3/2022 12:00:00 AM |
| 7/22/2022 | 07/17/2022 | 7/17/2022 12:00:00 AM |
| 7/23/2022 | 07/17/2022 | 7/17/2022 12:00:00 AM |
| 7/27/2022 | 07/24/2022 | 7/24/2022 12:00:00 AM |
| 8/2/2022 | 07/31/2022 | 7/31/2022 12:00:00 AM |
| 8/8/2022 | 08/07/2022 | 8/7/2022 12:00:00 AM |
| 8/19/2022 | 08/14/2022 | 8/14/2022 12:00:00 AM |
| 9/26/2022 | 09/25/2022 | 9/25/2022 12:00:00 AM |
| 10/14/2022 | 10/09/2022 | 10/9/2022 12:00:00 AM |
| 10/29/2022 | 10/23/2022 | 10/23/2022 12:00:00 AM |

Мера start\_of\_week создана в объекте диаграммы с использованием функции weekstart(), где в качестве аргумента функции передано поле date.

Функция weekstart() определяет, к какой неделе относится значение даты, и возвращает метку времени для первой миллисекунды этой недели.

Диаграмма функции weekstart(), пример с объектом диаграммы

Диаграмма функции weekstart(), пример с объектом диаграммы

Диаграмма функции weekstart()weekstart(), пример с объектом диаграммы![Диаграмма, демонстрирующая, как функция weekstart преобразует дату каждой транзакции в метку времени первой миллисекунды недели, в течение которой совершена эта транзакция.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekstart-examples-chart-object.png)

Транзакция 8191 совершена 5 февраля. Системная переменная FirstWeekDay задает в качестве первого дня недели воскресенье. Функция weekstart() определяет, что первым воскресеньем перед 5 февраля и, следовательно, первым днем недели является 30 января. Поэтому значение start\_of\_week для этой транзакции возвращает первую миллисекунду этого дня, то есть 00:00:00 (12:00:00 AM) 30 января.

## Пример 5. Сценарий

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/weekstart.htm)

#### Скрипт загрузки и выражение диаграммы

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.

Скрипт загрузки содержит следующее:

* Набор данных, который загружается в таблицу под именем Payroll

* Данные, включающие идентификаторы сотрудников, имена сотрудников и среднюю дневную заработную плату каждого сотрудника.

Сотрудники приступают к работе в понедельник и работают 6 дней в неделю. Системную переменную FirstWeekDay изменять нельзя.

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

Скрипт загрузки

```
Payroll: 
Load
*
Inline 
[
employee_id,employee_name,day_rate
182,Mark, $150
183,Deryck, $125
184,Dexter, $125
185,Sydney,$270
186,Agatha,$128
];
```

Результаты

Выполните следующие действия.

1. Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

   * employee\_id

   * employee\_name

2. Затем создайте меру для расчета заработной платы, заработанной в течение недели до текущей даты:

   =if(today(1)-weekstart(today(1),0,0)&lt;7,(today(1)-weekstart(today(1),0,0))\*day\_rate,day\_rate\*6)

3. Задайте параметру меры Формат чисел значение Денежный.

Результирующая таблица

| employee\_id | employee\_name | =if(today(1)-weekstart(today(1),0,0)&lt;7,(today(1)-weekstart(today(1),0,0))\*day\_rate,day\_rate\*6) |
| --- | --- | --- |
| 182 | Mark | $600.00 |
| 183 | Deryck | $500.00 |
| 184 | Dexter | $500.00 |
| 185 | Sydney | $1080.00 |
| 186 | Agatha | $512.00 |

Функция weekstart(), используя сегодняшнюю дату в качестве первого аргумента и 0 в качестве третьего аргумента, задает понедельник в качестве первого дня недели и возвращает дату начала текущей недели. Вычитая этот результат из текущей даты, выражение затем возвращает количество дней, прошедших до сих пор в течение этой недели.

Затем условие снова проверяет, прошло ли больше 6 дней на этой неделе. Если да, то day\_rate сотрудника умножается на 6 дней. В противном случае day\_rate умножается на количество дней этой недели, которые уже прошли.