Объедините несколько строк в одну строку в Google Data Prep - PullRequest
2 голосов
/ 15 апреля 2020

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

+------------+--------------+------+----+----+----+----+
|    Date    |     Time     | User | D1 | D2 | D3 | D4 |
+------------+--------------+------+----+----+----+----+
| 2020-04-15 | 05:39:45 UTC | A    |  2 |    |    |    |
| 2020-04-15 | 05:39:45 UTC | A    |    |  5 |    |    |
| 2020-04-15 | 05:39:45 UTC | A    |    |    |  8 |    |
| 2020-04-15 | 05:39:45 UTC | A    |    |    |    |  7 |
+------------+--------------+------+----+----+----+----+

И я хочу преобразовать ее в что-то вроде этого.

+------------+--------------+------+----+----+----+----+
|    Date    |     Time     | User | D1 | D2 | D3 | D4 |
+------------+--------------+------+----+----+----+----+
| 2020-04-15 | 05:39:45 UTC | A    |  2 |  5 |  8 |  7 |
+------------+--------------+------+----+----+----+----+

Я пробовал "устанавливать" и "собирать", но они не работали как я хотел, и я не уверен, как go переслать.

Любая помощь будет оценена. Спасибо.

1 Ответ

2 голосов
/ 15 апреля 2020

tl; dr:

используйте функцию fill (), чтобы заполнить все пустые значения в каждом столбце d1-d4 в требуемой группе (AKA - столбцы дата + время + пользователь) затем выполните дедупликацию \ aggregate к содержимому вашего сердца.

длинная версия

Так что самый быстрый способ сделать это - использовать оконную функцию с именем "fill ()". Что эта функция делает для каждого заданного поля в столбце, она говорит ему: «Посмотрите вниз. Посмотрите вверх. Найдите ближайшее непустое значение и скопируйте его!» Вы можете, конечно, limit , это зрение (например, посмотрите только на 3 строки выше), но для этого примера ограничение не нужно. поэтому ваша функция заполнения будет выглядеть так: FILL ($ col, -1, -1) Таким образом, $ col будет ссылаться на все выбранные столбцы. «-1» говорит «безграничное зрение». наконец, «~» говорит «от столбца D1 к столбцу D4».

Итак, функция будет выглядеть так:

fill_creation.

Что, в свою очередь, сделает ваши столбцы похожими на это: output columns.

Теперь вы можете использовать преобразование "дедупликация", чтобы удалить любые дубликаты и только 1 копию каждого " группа "останется. В качестве альтернативы, если вы все еще хотите использовать «Группировать по», вы можете сделать это также.

Надеюсь, это поможет =]

ps Есть и другие способы сделать это - что влечет за собой использование преобразования "pivot" и отмены массива. Но в процессе вы потеряете имена ваших столбцов, и вам нужно будет их переименовать.

...