объединить блоки данных SQL разных десятичных типов данных - PullRequest
0 голосов
/ 19 июня 2020

У меня есть поиск Databricks SQL, который приводит к типу данных decimal(18,0)

Я хочу добавить результаты этого поиска в существующую таблицу (df.write.format("delta").mode("append").save("a_path")), но не могу, потому что у нее есть тип данных decimal(38,18)

Когда я пытаюсь добавить, я получаю сообщение об ошибке: AnalysisException: Failed to merge fields 'id' and 'id'. Failed to merge decimal types with incompatible precision 38 and 18 & scale 18 and 0;

Есть ли способ обойти это?

Я пытался использовать результат поиска до десятичного числа (38,18) select cast(id decimal(38,18))..., но это не сработало

Любые предложения

1 Ответ

2 голосов
/ 19 июня 2020

В качестве обходного решения я преобразовал столбцы поиска SQL в десятичный тип в pyspark, а затем продолжил объединение:

query="""select * from ..."""

df=spark.sql(query)
df=df.withColumn("id",df["id"].cast(DecimalType(38,18)))
df.write.format("delta").mode("append").save("a_path")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...