clickzetta-semantic-model-generator 1.0.10__tar.gz → 1.0.12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/PKG-INFO +1 -1
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/pyproject.toml +1 -1
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/clickzetta_utils/clickzetta_connector.py +62 -11
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/LICENSE +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/README.md +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/__init__.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/clickzetta_utils/env_vars.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/clickzetta_utils/utils.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/data_processing/__init__.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/data_processing/cte_utils.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/data_processing/cte_utils_test.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/data_processing/data_types.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/data_processing/proto_utils.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/generate_model.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/llm/__init__.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/llm/dashscope_client.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/llm/enrichment.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/llm/progress_tracker.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/output_models/.keep +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/protos/semantic_model.proto +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/protos/semantic_model_pb2.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/protos/semantic_model_pb2.pyi +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/relationships/__init__.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/relationships/discovery.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/tests/clickzetta_connector_test.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/tests/cte_utils_test.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/tests/generate_model_classification_test.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/tests/llm_enrichment_test.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/tests/relationship_discovery_test.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/tests/relationships_filters_test.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/tests/samples/validate_yamls.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/tests/utils_test.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/tests/validate_model_test.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/tests/yaml_to_semantic_model_test.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/validate/context_length.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/validate/keywords.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/validate/schema.py +0 -0
- {clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/semantic_model_generator/validate_model.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "clickzetta-semantic-model-generator"
|
3
|
-
version = "1.0.
|
3
|
+
version = "1.0.12"
|
4
4
|
description = "Curate a Semantic Model for ClickZetta Lakehouse"
|
5
5
|
authors = ["qililiang <qililiang@clickzetta.com>"]
|
6
6
|
license = "Apache Software License; BSD License"
|
@@ -491,19 +491,64 @@ def _fetch_columns_via_show(
|
|
491
491
|
table_token = str(table_name).strip()
|
492
492
|
if not table_token:
|
493
493
|
continue
|
494
|
-
|
494
|
+
|
495
|
+
identifier_candidates: List[str] = []
|
496
|
+
fully_qualified = join_quoted_identifiers(
|
495
497
|
*(part for part in (catalog, schema_token, table_token) if part)
|
496
498
|
)
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
499
|
+
if fully_qualified:
|
500
|
+
identifier_candidates.append(fully_qualified)
|
501
|
+
schema_qualified = (
|
502
|
+
join_quoted_identifiers(schema_token, table_token)
|
503
|
+
if schema_token
|
504
|
+
else ""
|
505
|
+
)
|
506
|
+
if schema_qualified:
|
507
|
+
identifier_candidates.append(schema_qualified)
|
508
|
+
bare_identifier = join_quoted_identifiers(table_token)
|
509
|
+
if bare_identifier:
|
510
|
+
identifier_candidates.append(bare_identifier)
|
511
|
+
|
512
|
+
df = pd.DataFrame()
|
513
|
+
df_source = ""
|
514
|
+
for identifier in identifier_candidates:
|
515
|
+
query = f"SHOW COLUMNS IN {identifier}"
|
516
|
+
try:
|
517
|
+
df = session.sql(query).to_pandas()
|
518
|
+
df_source = "SHOW COLUMNS"
|
519
|
+
except Exception as exc:
|
520
|
+
logger.debug(
|
521
|
+
"SHOW COLUMNS fallback failed for {}: {}", identifier, exc
|
522
|
+
)
|
523
|
+
df = pd.DataFrame()
|
524
|
+
if df.empty:
|
525
|
+
describe_query = f"DESCRIBE TABLE {identifier}"
|
526
|
+
try:
|
527
|
+
describe_df = session.sql(describe_query).to_pandas()
|
528
|
+
except Exception as exc:
|
529
|
+
logger.debug(
|
530
|
+
"DESCRIBE TABLE fallback failed for {}: {}", identifier, exc
|
531
|
+
)
|
532
|
+
describe_df = pd.DataFrame()
|
533
|
+
if not describe_df.empty:
|
534
|
+
df = describe_df
|
535
|
+
df_source = "DESCRIBE TABLE"
|
536
|
+
if not df.empty:
|
537
|
+
break
|
505
538
|
if df.empty:
|
506
539
|
continue
|
540
|
+
if df_source == "DESCRIBE TABLE":
|
541
|
+
if "KIND" in df.columns:
|
542
|
+
df = df[df["KIND"].astype(str).str.upper() == "COLUMN"]
|
543
|
+
rename_map = {}
|
544
|
+
if "NAME" in df.columns:
|
545
|
+
rename_map["NAME"] = "COLUMN_NAME"
|
546
|
+
if "TYPE" in df.columns:
|
547
|
+
rename_map["TYPE"] = "DATA_TYPE"
|
548
|
+
if rename_map:
|
549
|
+
df = df.rename(columns=rename_map)
|
550
|
+
if df.empty:
|
551
|
+
continue
|
507
552
|
df.columns = [str(col).upper() for col in df.columns]
|
508
553
|
schema_col = next(
|
509
554
|
(col for col in ("TABLE_SCHEMA", "SCHEMA_NAME") if col in df.columns), None
|
@@ -527,8 +572,14 @@ def _fetch_columns_via_show(
|
|
527
572
|
)
|
528
573
|
|
529
574
|
normalized = pd.DataFrame()
|
530
|
-
normalized[_TABLE_SCHEMA_COL] =
|
531
|
-
|
575
|
+
normalized[_TABLE_SCHEMA_COL] = (
|
576
|
+
df[schema_col]
|
577
|
+
if schema_col
|
578
|
+
else (schema_token or table_schema or "")
|
579
|
+
)
|
580
|
+
normalized[_TABLE_NAME_COL] = (
|
581
|
+
df[table_col] if table_col else table_token
|
582
|
+
)
|
532
583
|
normalized[_COLUMN_NAME_COL] = (
|
533
584
|
df[column_col] if column_col else df.index.astype(str)
|
534
585
|
)
|
{clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/LICENSE
RENAMED
File without changes
|
{clickzetta_semantic_model_generator-1.0.10 → clickzetta_semantic_model_generator-1.0.12}/README.md
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|