Чтобы сэкономить время, я был бы благодарен, если бы кто-то мог собрать T (Transform) часть для меня, пока я занят записи L (Load) часть.
Я определил требования ниже. пожалуйста дайте мне знать, как долго он будет считать вас, чтобы написать функцию, и сколько (в BTC) вы бы потребовать в качестве оплаты за услуги.
ТЛ; др:
Используйте объект фильтра для преобразования объекта данных. Найти соответствующие переводы и экстракцию в объекте фильтра путем сопоставления с ключом в объекте данных. Основываясь на фильтре удаление зубов, удалить столбцы из "поля" А ТАКЖЕ "данные" элементы в объекте данных (с сохранением порядка остальных значений). Основываясь на фильтре переводы, переводить "поля" Значения в объекте данных (с сохранением порядка).
Мне нужно, чтобы написать функцию яваскрипта преобразование (фильтр, данные обратный вызов) {. , , }
фильтр является объектом определяется как:
Код:
{
dataType1: {
переводы: {
имя_столбца1: "newColumName1",
имя_столбца2: "newColumName2",
columnName3: "newColumnName3"
},
Экстракция: [ "columnName5" ]
},
dataType2: {
переводы: {
имя_столбца1: "newColumName1",
имя_столбца2: "newColumName2",
columnName4: "newColumnName4"
},
Экстракция: [ "columnName3", "columnName5" ]
},
dataType3: {
переводы: {
имя_столбца2: "newColumName2",
columnName4: "newColumName4",
columnName5: "newColumnName5"
},
Экстракция: []
},
dataType4: {
переводы: {
},
Экстракция: [ "имя_столбца1", "columnName3" ]
}
}
dataType1: {
переводы: {
имя_столбца1: "newColumName1",
имя_столбца2: "newColumName2",
columnName3: "newColumnName3"
},
Экстракция: [ "columnName5" ]
},
dataType2: {
переводы: {
имя_столбца1: "newColumName1",
имя_столбца2: "newColumName2",
columnName4: "newColumnName4"
},
Экстракция: [ "columnName3", "columnName5" ]
},
dataType3: {
переводы: {
имя_столбца2: "newColumName2",
columnName4: "newColumName4",
columnName5: "newColumnName5"
},
Экстракция: []
},
dataType4: {
переводы: {
},
Экстракция: [ "имя_столбца1", "columnName3" ]
}
}
Где:
- datatype1, dataType2, dataType3 произвольные строки, которые могут быть любой строкой.
- Там всегда будет по крайней мере один тип данных ключ в объекте фильтра, и не более чем 500.
- переводы и экстракция являются ключевыми словами, которые всегда будут существовать в любом объекте типа данных, но (как видно на примере) может быть пустым объект или пустой массив в качестве значения.
- имя_столбца1, имя_столбца2, columnName3, columnName4, columnName5, columnName6, newColumnName1, newColumnName2, newColumnName3, newColumnName4, newColumnName5, newColumnName6 произвольные строки, которые могут быть любой строкой.
данные является объектом определяется как (например):
Код:
{
"dataType2": {
"поля": [ "имя_столбца1", "имя_столбца2", "columnName3", "columnName4", "columnName5", "columnName6" ],
"данные": [
[1, 32,4, "некоторые данные", ноль, "youGetTheIdea", "и т.д" ]
[5, 3.14, "больше данных", "даже больше", ноль, "и т.д"]
]
}
"dataType2": {
"поля": [ "имя_столбца1", "имя_столбца2", "columnName3", "columnName4", "columnName5", "columnName6" ],
"данные": [
[1, 32,4, "некоторые данные", ноль, "youGetTheIdea", "и т.д" ]
[5, 3.14, "больше данных", "даже больше", ноль, "и т.д"]
]
}
Там никогда не будет больше, чем 1 DATATYPE в то время в объекте данных, когда функция преобразования называется
это возможно, что данные не будут иметь каких-либо полезных данных в этом. В таком случае это будет:
Код:
Данные = {
"тип данных": {
"поля":ноль,
"данные": []
}
}
"тип данных": {
"поля":ноль,
"данные": []
}
}
Перезвони является функцией:
Функция обратного вызова (эээ, данные) {...}
Параметры:
ERR (ошибка) - Установите нулевое значение, если запрос успешен. В противном случае объект ошибки указывает на проблему.
Данные (объект) - преобразованный объект данных. Установите нулевое значение, если произошла ошибка.
Функции преобразования () нужно искать ключ типа данных из объекта данных в объекте фильтра, чтобы найти необходимые переводы и экстракцию для этого типа данных.
Любое вхождение ключа переводов в полях массива объекта данных должно быть изменено в массиве к соответствующему значению переводов полеев. Порядок элементов в массиве должен быть сохранен.
Любое вхождение элемента из массива экстракций, что происходит в массиве полей должно быть удалено из массива полех и значение в том же смещении в элементах массива данных, также должно быть удалено. Порядок остальных элементов должен быть сохранен.
Принимая во внимание приведенные выше примеры, полученный объект данных после преобразования будет:
Код:
{
"dataType2": {
"поля": [ "newColumName1", "newColumName2", "newColumnName4", "columnName6" ],
"данные": [
[1, 32,4, нуль, "и т.д" ]
[5, 3.14, "даже больше", "и т.д"]
]
}
"dataType2": {
"поля": [ "newColumName1", "newColumName2", "newColumnName4", "columnName6" ],
"данные": [
[1, 32,4, нуль, "и т.д" ]
[5, 3.14, "даже больше", "и т.д"]
]
}