Big Query Data Expiration - PullRequest
       3

Big Query Data Expiration

0 голосов
/ 15 февраля 2020

Я собираю данные в BigQuery для целей анализа. Тем не менее, размер данных растет, и мне нужны только 2 недели последних данных. Я хотел стереть данные, которые не используются. Я провел некоторое исследование и обнаружил, что существует опция истечения срока действия для секционированных данных.

Текущая настройка:

Моя таблица является секционированной таблицей. Я использую лямбда-функцию с кодом, подобным этому, чтобы поместить данные в таблицу (я попытался добавить опцию timePartitioning, но она не сработала, поэтому я спрашиваю о stackoverflow, если кто-нибудь знает)

wait bq
      .dataset("dataset name")
      .table('tablename' + '$' + partitionTime)
      .load( filename, {
        sourceFormat: 'CSV',
        schema,
        skipLeadingRows: 1, 
        timePartitioning: {
           expirationMs: "300000"
        }
      });

Где partitionTime имеет формат YYYYMMDD (в нем помещаются данные, вставленные в этот раздел)

Спасибо за все ваши комментарии и за то, что нашли время прочитать мои проблемы :) Хорошего дня.

1 Ответ

0 голосов
/ 17 февраля 2020

Как видите здесь , функция load принимает три параметра:

  1. источник (необходим)
  2. метаданные (необязательно)
  3. обратный вызов (необязательно)

Необходимые параметры можно установить в параметре metadata. По приведенной выше ссылке вы также можете заметить, что BigQuery SDK использует вызовы API для выполнения заданных операций. В этой ссылке и на принтере ниже вы можете увидеть, как создать правильный вызов API для BigQuery

enter image description here

В поле timePartitioning вы можете добавить DAY в качестве подсказки разбиения и время истечения срока действия в миллисекундах.

В конце ваш код будет иметь небольшое изменение:

 wait bq
      .dataset("dataset name")
      .table('tablename')
      .load( filename, {
        sourceFormat: 'CSV',
        schema,
        skipLeadingRows: 1, 
        timePartitioning: {
           type: "DAY",
           expirationMs: "300000"
        }
      });

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

...