Я начинаю изучать, как использовать singer-io
для создания пользовательских taps
.
После создания project
, производного от this template
, я определил schema
на основе Getting Started пример. Итак, у меня есть ip.json
внутри моей папки schemas
:
{
"properties": {
"ip": {"type": "string"},
"timestamp": {"type": "string"}
}
}
Внутри __init__.py sync function
, я изменил:
tap_data = lambda: [{"ip": "0.0.0.0", "timestamp": "01-01-2010"}]
Следуя инструкциям template repo
, Я побежал
tap-ip -c sample_config.json --discover --discover > catalog.json
В catalog.json
, я получил:
{
"streams": [
{
"tap_stream_id": "ip",
"key_properties": [],
"schema": {
"properties": {
"ip": {
"type": "string"
},
"timestamp": {
"type": "string"
}
}
},
"stream": "ip",
"metadata": {
"selected": true
}
}
]
}
Где я уже добавил selected: true
.
Затем, Я создал venv
для этого tap
.
Когда я запускаю tap-ip --config sample_config.json --catalog catalog.json
, я получаю:
File "/home/mhery/.virtualenvs/tap-ip /lib/python3.7/site-packages/singer/metadata.py ", строка 5, взамен {tuple (md ['breadcrumb']): md ['metadata'] для md в raw_metadata} TypeError: string индексы должны быть целыми числами
Почему я получаю эту ошибку?
Я уже получаю это, когда удаляю selected: true
и когда пытаюсь указать файл state
с флагом. Его содержание таково:
{
"bookmarks": {
"ip": {
"last_record": "2017-07-07T10:20:00Z"
}
}
}