import great_expectations as gx
connection = "mssql+pyodbc://tabular:sin#tabular@sqldata.oos.ru:1433/dwh?driver=ODBC+Driver+17+for+SQL+Server&charset=utf&autocommit=true"
base_query = """
SELECT DISTINCT
pc.[nomenclature_component_code] AS [code_comp],
comp.[Наименование] AS [name_comp],
comp.[GUID] AS [guid_comp]
FROM
dwh.upp.product_composition pc
LEFT JOIN
dwh.upp.nomenclature1c_json comp ON
comp.[Код_Номенклатуры] = pc.nomenclature_component_code
WHERE
comp.[ОБВидномеклатуры] = 'Сырье и комплектация' AND
pc.[specification_gp_active] = 1
"""
context = gx.get_context(mode="ephemeral")
# Добавляем источник данных
data_source = context.data_sources.add_sql("sqldata_datasource", connection_string=connection)
data_asset = data_source.add_query_asset(name="sim_from_actual_specifications_data_asset", query=base_query)
# Получаем Batch
batch_definition = data_asset.add_batch_definition_whole_table("batch_def")
batch = batch_definition.get_batch()
# Пробуем получить первые несколько строк
first_rows = batch.head(5)
print(f"Первые строки:\n{first_rows}")
# Получаем список колонок
columns = list(first_rows.columns) if hasattr(first_rows, 'columns') else []
print(f"Колонки: {columns}")
# Проводим проверку на отсутствие пустых значений в колонке "code_comp"
validator = context.get_validator(batch_request=batch_definition.build_batch_request())
validation_result = validator.expect_column_values_to_not_be_null(column="code_comp")
print(f"Результат проверки: {validation_result}")