我想使用Great Expectations包来验证 .csv 文件中的列仅包含整数。
我正在使用的文件在年龄列中只有整数,除了一行具有“”字符之外。这就是我希望期望能够捕捉到的。我还在文本编辑器中检查了 .csv 文件,并可以确认年龄列中的年龄未用引号引起来。
然而,100% 的数据都未能达到预期。我认为这是因为 pandas 正在读取作为对象类型(因此是字符串)的列,因为有一个不正确的行。我可以使用类似的方法对其进行预处理,.astype(int)因为它会在该行上失败。而包裹.astype(int)在一个try块中将完全违背对此寄予厚望的目的。
这是一个最小的工作示例:
好.csv:
age,name
34,Fred
22,Bob
54,Mary
Run Code Online (Sandbox Code Playgroud)
坏.csv:
age,name
34,Fred
`,Bob
54,Mary
Run Code Online (Sandbox Code Playgroud)
代码:
import great_expectations as ge
df = ge.read_csv("./good.csv");
my_df.expect_column_values_to_be_of_type('age','int')
df = ge.read_csv("./bad.csv");
my_df.expect_column_values_to_be_of_type('age','int')
Run Code Online (Sandbox Code Playgroud)
第一个案例返回
{'success': True,
'result': {'element_count': 3,
'missing_count': 0,
'missing_percent': 0.0,
'unexpected_count': 0,
'unexpected_percent': 0.0,
'unexpected_percent_nonmissing': 0.0,
'partial_unexpected_list': []}}
Run Code Online (Sandbox Code Playgroud)
所以所有的年龄都是整数,并且每一行都成功。我预计第二种情况会失败,但仅限于第二行。但是它在所有行上都失败:
{'success': False,
'result': {'element_count': 3,
'missing_count': 0,
'missing_percent': 0.0,
'unexpected_count': 3,
'unexpected_percent': 1.0,
'unexpected_percent_nonmissing': 1.0,
'partial_unexpected_list': ['34', '`', …Run Code Online (Sandbox Code Playgroud) 我正在尝试用远大的期望。
我想使用的功能是expect_compound_columns_to_be_unique. 这是代码(主代码 - 模板):
import datetime
import pandas as pd
import great_expectations as ge
import great_expectations.jupyter_ux
from great_expectations.core.batch import BatchRequest
from great_expectations.checkpoint import SimpleCheckpoint
from great_expectations.exceptions import DataContextError
context = ge.data_context.DataContext()
# Note that if you modify this batch request, you may save the new version as a .json file
# to pass in later via the --batch-request option
batch_request = {'datasource_name': 'impala_okh', 'data_connector_name': 'default_inferred_data_connector_name', 'data_asset_name': 'okh.okh_forecast_prod', 'limit': 1000}
# Feel free to change the name of …Run Code Online (Sandbox Code Playgroud) 我们希望在具有条件期望的 DataBricks 中实现 Great_Expectations'。根据 GE 的文档https://docs.greatexpectations.io/docs/reference/expectations/conditional_expectations仅适用于 Pandas,默认情况下此参数必须设置为“pandas”,因此需要适当的语法。未来可能会实施其他引擎。
有谁知道它是否可以在与 Pandas API 集成的 Spark 3.2.1 中实现?如果没有,有什么建议可以使用 Spark 3.2.1 处理 DataBricks 中的条件期望吗?
我开始在一个项目中使用远大期望。我正在尝试以编程方式创建一个具有远大期望的期望套件。我有一个 GCS 数据源(由 2 个 csv 文件组成),定义如下great_expectations.yml:
datasources:
GCS_Data:
class_name: Datasource
data_connectors:
default_inferred_data_connector_name:
class_name: InferredAssetFilesystemDataConnector
default_regex:
group_names:
- data_asset_name
pattern: (.*)
base_directory: gs://mybucket/GCS_datasource
module_name: great_expectations.datasource.data_connector
default_runtime_data_connector_name:
class_name: RuntimeDataConnector
module_name: great_expectations.datasource.data_connector
assets:
my_runtime_asset_name:
class_name: Asset
module_name: great_expectations.datasource.data_connector.asset
batch_identifiers:
- runtime_batch_identifier_name
execution_engine:
class_name: PandasExecutionEngine
module_name: great_expectations.execution_engine
module_name: great_expectations.datasource
config_variables_file_path: uncommitted/config_variables.yml
Run Code Online (Sandbox Code Playgroud)
当我尝试创建期望套件时,我运行:
import great_expectations as ge
from great_expectations.core.batch import BatchRequest
from great_expectations.checkpoint import SimpleCheckpoint #needed?
from great_expectations.exceptions import DataContextError
context = ge.data_context.DataContext()
# Note that if you modify this batch request, …Run Code Online (Sandbox Code Playgroud) 我有一个 pandas 或 pyspark 数据框df,我想在其中运行期望。我的数据框已经在内存中了。如何将我的数据框转换为great_expectations 数据集?
这样我就可以这样做:
df.expect_column_to_exist("my_column")
Run Code Online (Sandbox Code Playgroud) 可能是一个非常简单的问题,但我无法从 great_expectations 的文档中弄清楚。我想在本地存储为腌制文件“.pkl”的 Pandas 数据帧上运行一些测试。
当我运行great_expectations add-datasource它时,它忽略了 .pkl 文件,只为 .csv 文件创建了资产。从 Pandas 读取 csv 文件很慢,所以如果 GE 可以支持其他格式,如 pickle 和 HDF,那就太好了。
如何加载 .pkl 或 .hdf 文件作为 GE 的资产?
我正在使用 v0.8.7 :)
我已经成功创建了 Great_Expectation 结果,我想将期望结果输出到 html 文件。
很少有链接强调如何使用所谓的“数据文档”以人类可读的方式显示结果https://docs.greatexpectations.io/en/latest/guides/tutorials/getting_started/set_up_data_docs.html#tutorials-getting-started -设置数据文档
但说实话,文档非常难以理解。
我的期望只是验证数据集中的乘客数量在 1 到 6 之间。我希望帮助使用“数据文档”将结果输出到文件夹,或者可以将数据输出到文件夹:
import great_expectations as ge
import great_expectations.dataset.sparkdf_dataset
from great_expectations.dataset.sparkdf_dataset import SparkDFDataset
from pyspark.sql.types import StructType, StructField, IntegerType, StringType, BooleanType
from great_expectations.data_asset import DataAsset
from great_expectations.data_context.types.base import DataContextConfig, DatasourceConfig, FilesystemStoreBackendDefaults
from great_expectations.data_context import BaseDataContext
from great_expectations.data_context.types.resource_identifiers import ValidationResultIdentifier
from datetime import datetime
from great_expectations.data_context import BaseDataContext
df_taxi = spark.read.csv('abfss://root@adlspretbiukadlsdev.dfs.core.windows.net/RAW/LANDING/yellow_trip_data_sample_2019-01.csv', inferSchema=True, header=True)
taxi_rides = SparkDFDataset(df_taxi)
taxi_rides.expect_column_value_lengths_to_be_between(column='passenger_count', min_value=1, max_value=6)
taxi_rides.save_expectation_suite()
Run Code Online (Sandbox Code Playgroud)
该代码是从 Apache Spark 运行的。
如果有人能给我指出正确的方向,我就能找到答案。
apache-spark pyspark databricks azure-databricks great-expectations
我想在我的管道中引入数据质量测试(空字段/最大-最小值/正则表达式等...),这将在数据登录到数据库之前消耗 kafta 主题测试数据。
我很难在 Deequ 和远大前程框架之间做出选择。Deequ 缺乏清晰的文档,但具有“异常检测”功能,可以将以前的扫描与当前的扫描进行比较。伟大的期望有非常好的和清晰的文档,因此开销更少。我认为这些框架都不是专门为数据流而设计的。
任何人都可以提供一些建议/其他框架建议吗?
python ×6
pandas ×4
apache-spark ×2
databricks ×2
pyspark ×2
validation ×2
amazon-deequ ×1
qa ×1
types ×1