Я испытываю проблемы с точностью метки времени при чтении таблиц Delta, созданных с помощью операций CDC Factory Azure. Трубопровод извлекает данные из базы данных Azure SQL в Azure Data Lake Gen2 в качестве формата Delta, но чтение таблицы Delta с библиотеками Python не выполняется из -за несоответствий точностью timestamp. < /P>
. Извлечение)
[*] назначение : data Data Lake Gen2 (формат таблицы дельта)
[*] etl tool : фабрика данных Azure
[*] libraries : python с pandas/polars + deltak /> < /ul>
код и ошибки < /h2>
подход Pandas < /h3>
Код: Выделить всё
from deltalake import DeltaTable
delta_table_uri = f"abfss://{container}@{account_name}.dfs.core.windows.net/{table_path}"
dt = DeltaTable(delta_table_uri)
df = dt.to_pandas()
Код: Выделить всё
ArrowInvalid: Casting from timestamp[ns] to timestamp[us, tz=UTC] would lose data: 4379020357742690304
< /code>
подход Polars < /h3>
import polars as pl
df = pl.read_delta(delta_table_uri, storage_options=storage_options)
Код: Выделить всё
SchemaError: data type mismatch for column DeliveryDate: expected: datetime[μs, UTC], found: datetime[ns]
< /code>
анализ < /h2>
[list]
Столбцы базы данных DateTime2 Azure SQL устанавливаются в Precision 3 (Millisecond Precision) < /li>
Схема таблицы Delta показывает точность Microsecond (точноdatetime[μs, UTC]
[*] Однако фактические данные, по -видимому, хранятся как наносекундная точность (
Код: Выделить всё
timestamp[ns]
[*]This suggests Azure Data Factory/Spark may be writing timestamps using int96 format, causing precision escalation
[/list]
What I've Tried
[*]Verified that the source SQL Server timestamps are millisecond precision (DateTime2 (3)) < /li>
Подтвердила схема Delta Table сообщает о микросекундной точке < /li>
Исследованная формата хранения Timestamp Spark int96 < /li>
< /ul>
Вопросы < /h2>
< /h2. несоответствие между схемой Delta Table (микросекунд) и фактической точностью данных (наносекунд)?
фабрика данных Azure : lit at adf для контроля временной метки при написании на формат дельтат? /> обходной путь Python < /strong>: как я могу прочитать эту таблицу дельты в Python при обработке несоответствия точности? Существуют ли конкретные параметры для Deltalake или Polars, чтобы справиться с этим? />
Таблица Delta была создана с помощью встроенной поддержки Delta Format Format Azure Data Pactory < /li>
Эта проблема возникает конкретно с столбцами DateTime из таблицы CDC < /li>
. Выпуск был бы очень признательен!
Подробнее здесь: https://stackoverflow.com/questions/796 ... ith-python