Вставить данные в дельта-таблицу блоков данных с прошлой отметкой времени - PullRequest
0 голосов
/ 18 февраля 2020

Я изучаю таблицу DataBricks Delta и ее временную / временную функцию. У меня есть некоторые данные о событиях, которые произошли в прошлом. Я пытаюсь вставить их в дельта-таблицу и могу путешествовать во времени, используя временную метку в данных, а не фактическое время вставки.

У меня есть столбец даты / времени в моем событии. Я переименовал его в «timestamp», но он все еще не работал.

Мои данные CSV выглядят так: (Данные показывают 5 обновлений, которые произошли в одном случае с id = 1000)

account_id,id,case_id,case_status,owner,department,priority,created_at,timestamp
2114809,1000,ABC-121,1,200,300,1,2020-01-01T08:00:00.000000-07:00,2020-01-01T08:00:00.000000-07:00
2114809,1000,ABC-121,2,200,300,3,2020-01-01T08:00:00.000000-07:00,2020-01-01T09:00:00.000000-07:00
2114809,1000,ABC-121,3,200,300,3,2020-01-01T08:00:00.000000-07:00,2020-01-03T13:00:00.000000-07:00
2114809,1000,ABC-121,3,201,300,3,2020-01-01T08:00:00.000000-07:00,2020-01-12T14:00:00.000000-07:00
2114809,1000,ABC-121,4,201,300,3,2020-01-01T08:00:00.000000-07:00,2020-01-13T10:00:00.000000-07:00

Я использовал эти команды для создания дельта-таблицы:

DROP TABLE IF EXISTS cases;
DROP TABLE IF EXISTS temp_cases;

CREATE TABLE temp_cases
USING csv
OPTIONS (path "/FileStore/tables/cases/test_cases.csv", header "true", inferSchema "true");

CREATE TABLE cases
USING delta
AS SELECT * FROM temp_cases;

DROP TABLE IF EXISTS temp_cases;

У меня есть 2 вопроса:

  1. Как я могу выполнить миграцию данных в дельта-таблицу и при этом сохранить временная метка из данных, а не вставленная временная метка для выполнения путешествия во времени?
  2. Как указать первичный ключ или составной первичный ключ при создании дельта-таблицы.

1 Ответ

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

Может быть небольшое недопонимание варианта использования путешествия во времени. Time Travel - это функция, которая дает пользователям доступ к различным версиям / снимкам таблицы Delta. Вы не можете указать атрибут отметки времени как индекс перемещения во времени своего рода.

Каждая операция (объединение, вставка, удаление и т. Д. c) в таблице Delta создает новую версию таблица с соответствующей отметкой времени и метаданными этого изменения. Затем вы можете путешествовать во времени к различным версиям ваших данных.

Вот ссылка на некоторую полезную документацию.

https://docs.delta.io/latest/delta-batch.html#query-старше-снимок-таблицы-путешествия во времени


По второму вопросу

Как указать первичный ключ или составной первичный ключ при создании дельта-таблицы.

Первичные ключи не являются компонент метаданных в дельта-таблице. В Delta Lake нет определения, известного как первичный ключ , за пределами операций слияния . Единственный раз, когда требуется уникальный ключ, это время выполнения операции слияния.

Еще немного полезной документации. Не делайте блок важных заметок в этом разделе

https://docs.delta.io/latest/delta-update.html#upsert -in-a-table-using-merge

...