airbytehq / airbytehq/PyAirbyte

PyAirbyteNameNormalizationError: PyAirbyteNameNormalizationError: Name cannot be empty after normalization.

未关闭
#344 5 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Python
星标
344
派生
77
平均合并
1 天 11 小时
30 天内合并 PR
35

描述

### Connector Name

S3

### Connector Version

NA

### What step the error happened?

Configuring a new connector

### Relevant information

``` Python
import airbyte as ab

source = ab.get_source(
"source-s3",
config={
"streams": [
{
"name": "",
"format": {
"filetype": "csv",
"ignore_errors_on_fields_mismatch": True,
},
"globs": ["**"],
"legacy_prefix": "",
"validation_policy": "Emit Record",
}
],
"bucket": ab.get_secret("S3_BUCKET_NAME"),
"aws_access_key_id": ab.get_secret("AWS_ACCESS_KEY"),
"aws_secret_access_key": ab.get_secret("AWS_SECRET_KEY"),
"region_name": ab.get_secret("AWS_REGION")
}
)

source.check()
```
```
Connection check succeeded for `source-s3`.
```
``` python
source.select_all_streams() # Select all streams
read_result = source.read() # Read the data

```

### Relevant log output

```shell
Sync Progress: source-s3 -> DuckDBCache
Started reading from source at 14:59:07:

Read 770 records over 4.0 seconds (193.5 records / second).

Cached 770 records into 1 local cache file(s).

Finished reading from source at 14:59:14.

Started cache processing at 14:59:14:

Processed 0 cache file(s) over 0.00 seconds.
Failed `source-s3 -> DuckDBCache` sync at `14:59:14`.
---------------------------------------------------------------------------
PyAirbyteNameNormalizationError Traceback (most recent call last)
in ()
1 source.select_all_streams() # Select all streams
----> 2 read_result = source.read() # Read the data

/usr/local/lib/python3.10/dist-packages/airbyte/sources/base.py in read(self, cache, streams, write_strategy, force_full_refresh, skip_validation)
642
643 try:
--> 644 result = self._read_to_cache(
645 cache=cache,
646 catalog_provider=CatalogProvider(self.configured_catalog),

/usr/local/lib/python3.10/dist-packages/airbyte/sources/base.py in _read_to_cache(self, cache, catalog_provider, stream_names, state_provider, state_writer, write_strategy, force_full_refresh, skip_validation, progress_tracker)
729 state_writer=state_writer,
730 )
--> 731 cache_processor.process_airbyte_messages(
732 messages=airbyte_message_iterator,
733 write_strategy=write_strategy,

/usr/local/lib/python3.10/dist-packages/airbyte/_future_cdk/record_processor.py in process_airbyte_messages(self, messages, write_strategy, progress_tracker)
241 # We've finished processing input data.
242 # Finalize all received records and state messages:
--> 243 self.write_all_stream_data(
244 write_strategy=write_strategy,
245 progress_tracker=progress_tracker,

/usr/local/lib/python3.10/dist-packages/airbyte/_future_cdk/record_processor.py in write_all_stream_data(self, write_strategy, progress_tracker)
259 """
260 for stream_name in sorted(self.catalog_provider.stream_names):
--> 261 self.write_stream_data(
262 stream_name,
263 write_strategy=write_strategy,

/usr/local/lib/python3.10/dist-packages/airbyte/_future_cdk/sql_processor.py in write_stream_data(self, stream_name, write_strategy, progress_tracker)
503 # Make sure the target schema and target table exist.
504 self._ensure_schema_exists()
--> 505 final_table_name = self._ensure_final_table_exists(
506 stream_name,
507 create_if_missing=True,

/usr/local/lib/python3.10/dist-packages/airbyte/_future_cdk/sql_processor.py in _ensure_final_table_exists(self, stream_name, create_if_missing)
407 Return the table name.
408 """
--> 409 table_name = self.get_sql_table_name(stream_name)
410 did_exist = self._table_exists(table_name)
411 if not did_exist and create_if_missing:

/usr/local/lib/python3.10/dist-packages/airbyte/_future_cdk/sql_processor.py in get_sql_table_name(self, stream_name)
207 """Return the name of the SQL table for the given stream."""
208 table_prefix = self.sql_config.table_prefix
--> 209 return self.normalizer.normalize(
210 f"{table_prefix}{stream_name}",
211 )

/usr/local/lib/python3.10/dist-packages/airbyte/_util/name_normalizers.py in normalize(name)
79
80 if not result.replace("_", ""):
---> 81 raise exc.PyAirbyteNameNormalizationError(
82 message="Name cannot be empty after normalization.",
83 raw_name=name,

PyAirbyteNameNormalizationError: PyAirbyteNameNormalizationError: Name cannot be empty after normalization.
Raw Name: ''
Normalization Result: ''
```

### Contribute

- [X] Yes, I want to contribute

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。