Построение пайплайн в Databroing. Меппинг файла эксель в существующую таблицу

Коллеги, просьба оказать содействие, в вопросе корректного построения pipeline. Необходимо грузить данные их эксель файла в существующую таблицу. Есть ли какой-либо пример?

Получается, мы загрузили exel-файл в базу через Databoring (пайплайн прикладывал в топике https://help.luxmsbi.com/-458/xlsx). Вопрос такой: на основе этой таблицы будет строится куб или будут еще какие-то преобразования для подготовки витрины данных?

Не совсем. У нас есть БД и в ней создана таблица. Структура таблицы - поля соответствуют наборам данных. Т.е. не все поля типа text (как при автосоздании), а текстовые, целочисленные, нумерик и т.д… При этом, поля могут не соответствовать структуре эксель. Например, из экселя нам не надо грузить колонки 3,5,…
Наша задача взять эксель файл и загрузить данные в эту таблицу. Т.е. создать мэппинг. Например:
графа эксель → поле таблицы
1 → Name (varchar 10)
2 → Costs (numeric 10,2)
4 → Date (datetime)
6 → Sign (int)

Загруженный exel-файл в базу - это сырые данные с типами, которые преобразовались в процессе загрузки через Databoring. (она условно у нас имеет префикc _tmp).
В таком случае лучше не выставлять галочку на преобразование.

Мы создаем дополнительно таблицу, в которой уже указаны нужные нам столбцы, с нужными типами и делаем INSERT из _tmp таблицы.

Ниже код пайплайна, в котором делаются подобные преобразования в базе Clickhouse.

[{"id":"2dd18a7c8219c8aa","type":"luxmsbi-run-sql","z":"28265718887aae21","name":"buf_tmp_mortgage","dataSource":"clickHouse","query":"-- vtb.housing_complex_prop definition\n\nCREATE TABLE IF NOT EXISTS vtb.buf_tmp_mortgage\n(\n\n    `mortgage_date` String,\n\n    `mortgage_year` String,\n\n    `mortgage_quarter` String,\n\n    `mortgage_month` String,\n\n    `mortgage_region` String,\n\n    `number_ihc_ddu_per_month` String,\n\n    `voluem_ihc_ddu_per_month` String,\n\n    `weighted_avg_term_for_loans_month` String,\n\n    `weighted_avg_rate_for_loans_month` String,\n\n    `current_debt_level_EoP` String,\n\n    `level_overdue_debt_EoP` String\n\n    \n)\nENGINE = MergeTree\nORDER BY mortgage_region\nSETTINGS index_granularity = 8192;","x":550,"y":2780,"wires":[["5b448394203effd8"]]},{"id":"5b448394203effd8","type":"luxmsbi-run-sql","z":"28265718887aae21","name":"tmp_mortgage","dataSource":"clickHouse","query":"CREATE TABLE IF NOT EXISTS vtb.tmp_mortgage\n(\n\n    `mortgage_date` Date,\n\n    `mortgage_year` Nullable(Int64),\n\n    `mortgage_quarter` Nullable(Int64),\n\n    `mortgage_month` Nullable(Int64),\n\n    `locality` String,\n\n    `number_ihc_ddu_per_month` Nullable(Float64),\n\n    `volume_ihc_ddu_per_month` Nullable(Float64),\n\n    `weighted_avg_term_for_loans_month` Nullable(Float64),\n\n    `weighted_avg_rate_for_loans_month` Nullable(Float64),\n\n    `current_debt_level_EoP` Nullable(Float64),\n\n    `level_overdue_debt_EoP` Nullable(Float64)\n\n    \n)\nENGINE = MergeTree\nORDER BY mortgage_date\nSETTINGS index_granularity = 8192;","x":760,"y":2780,"wires":[["bf0330764f17724d"]]},{"id":"bf0330764f17724d","type":"exec","z":"28265718887aae21","command":"curl ...","addpay":false,"append":"","useSpawn":"false","timer":"","winHide":false,"oldrc":false,"name":"buf_tmp_mortgage","x":970,"y":2780,"wires":[["7b8fc69c37f5370d"],[],[]]},{"id":"7b8fc69c37f5370d","type":"luxmsbi-run-sql","z":"28265718887aae21","name":"insert buf_tmp_mortgage -> tmp_mortgage","dataSource":"clickHouse","query":"insert into vtb.tmp_mortgage\n(\n     mortgage_date\n    ,mortgage_year\n    ,mortgage_quarter\n    ,mortgage_month\n    ,locality\n    ,number_ihc_ddu_per_month\n    ,volume_ihc_ddu_per_month\n    ,weighted_avg_term_for_loans_month\n    ,weighted_avg_rate_for_loans_month\n    ,current_debt_level_EoP\n    ,level_overdue_debt_EoP\n)\nselect \n     parseDateTimeBestEffortOrNull(t1.mortgage_date, 'Etc/GMT-3')\n    ,t1.mortgage_year\n    ,t1.mortgage_quarter\n    ,t1.mortgage_month\n    ,t1.mortgage_region\n    ,toFloat32(replaceAll(t1.number_ihc_ddu_per_month,',','.'))\n    ,toFloat32(replaceAll(t1.voluem_ihc_ddu_per_month,',','.'))\n    ,toFloat32(replaceAll(t1.weighted_avg_term_for_loans_month,',','.'))\n    ,toFloat32(replaceAll(t1.weighted_avg_rate_for_loans_month,',','.'))\n    ,toFloat32(replaceAll(t1.current_debt_level_EoP,',','.'))\n    ,toFloat32(replaceAll(t1.level_overdue_debt_EoP,',','.'))\n\n\n    from vtb.buf_tmp_mortgage t1;\n    \n\n","x":1270,"y":2780,"wires":[["be74cc723a477917"]]},{"id":"5553f6a0ffad2714","type":"inject","z":"28265718887aae21","name":"mortgage","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"mortgage","payload":"","payloadType":"date","x":200,"y":2780,"wires":[["2dd18a7c8219c8aa"]]},{"id":"cb79976cdc79842c","type":"luxmsbi-run-sql","z":"28265718887aae21","name":"trun","dataSource":"clickHouse","query":"TRUNCATE TABLE IF EXISTS vtb.tmp_mortgage;\n","x":790,"y":2840,"wires":[["b3bc6c02a0733f45"]]},{"id":"be74cc723a477917","type":"luxmsbi-run-sql","z":"28265718887aae21","name":"trun","dataSource":"clickHouse","query":"TRUNCATE TABLE IF EXISTS vtb.buf_tmp_mortgage;\n","x":510,"y":2840,"wires":[["905c2e4aa21a1e23"]]},{"id":"905c2e4aa21a1e23","type":"luxmsbi-run-sql","z":"28265718887aae21","name":"ren","dataSource":"clickHouse","query":"RENAME TABLE vtb.mortgage TO vtb.prov_mortgage, vtb.tmp_mortgage TO vtb.mortgage, vtb.prov_mortgage TO vtb.tmp_mortgage;\n","x":650,"y":2840,"wires":[["cb79976cdc79842c"]]},{"id":"b3bc6c02a0733f45","type":"debug","z":"28265718887aae21","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1010,"y":2840,"wires":[]}]

Спасибо. Буду разбираться

Так, а где же ссылка на наш файл эксель с данными?

снят вопрос… не сначала прочитал

Мы загружаем на ETL процессе.

Да, спасибо. Уже разобрался. Все таки галку лучше ставить, тогда в темповой таблице типы полей верные. Если галка не стоит - все поля text.

1 лайк