一句 SQL生成海量超真实模拟数据

一句 SQL生成海量超真实模拟数据

UDF generate_person 在Apache Superset里的动图效果


探索DuckDB:使用标量 Python UDF 快速扩展 DuckDB 的功能 提到了DuckDB 中使用Faker 库生成标量函数,该函数返回随机生成的日期。今天我们来个进阶版本。

Faker 简介

Faker 是什么?

  • • Faker 是一个 Python 包,可以生成虚假数据。

  • • Faker 可以生成各种类型的数据,包括姓名、地址、电话号码、电子邮件地址、公司名称、产品名称、价格等。

  • • Faker 可以生成模拟真实世界的数据,也可以生成完全随机的数据。

Faker 的主要功能:

  • • 💌 地点 – 生成看起来有效的地址、邮政编码、街道名称、州和国家!

  • • ⏰ 基于时间的数据 – 过去、现在、未来、最近、即将发生……随时随地!

  • • 🌏 本地化 – 选择一个语言环境来生成看起来逼真的姓名、地址和电话号码。

  • • 💸 财务 – 创建存根帐户详细信息、交易和加密地址。

  • • 👠 产品 – 生成价格、产品名称、形容词和说明。

  • • 🧍 姓名 – 生成具有完整在线和离线身份的虚拟人。

  • • 🔢 数字 – 当然,我们还可以生成随机数字和字符串。

注意: Faker 尝试生成真实数据,而不是明显的虚假数据。生成的姓名、地址、电子邮件、电话号码和/或其他数据可能是巧合的有效信息。请不要从您的测试设置向他们发送任何消息/电话。

Faker的主要用途?

  • • 生成测试数据: Faker 可用于生成大量测试数据,用于软件开发和测试。这可以帮助开发人员快速创建大量数据,以测试其应用程序的功能和性能。

  • • 模拟真实数据: Faker 可以生成模拟真实数据的测试数据,这可以帮助开发人员测试其应用程序在现实世界中的行为方式。例如,Faker 可以生成模拟用户数据、产品数据和订单数据,以测试电子商务应用程序的功能和性能。

  • • 创建匿名数据: Faker 可以生成匿名数据,这可以帮助开发人员保护用户隐私。例如,Faker 可以生成模拟用户数据,但不包括用户的姓名、电子邮件地址或其他个人信息。这可以帮助开发人员测试其应用程序的功能和性能,同时保护用户隐私。

  • • 提高开发效率: Faker 可以帮助开发人员提高开发效率。通过使用 Faker,开发人员可以快速创建大量测试数据,而无需手动输入数据。这可以节省开发人员的时间,并让他们专注于开发应用程序的功能和性能。

  • • 提高测试覆盖率: Faker 可以帮助开发人员提高测试覆盖率。通过使用 Faker,开发人员可以生成大量测试数据,以覆盖应用程序的不同场景和情况。这可以帮助开发人员发现应用程序中的错误和缺陷,并提高应用程序的质量。

如何安装和使用 Faker?

  1. 1. 安装 Faker:

pip install faker
  1. 1. 导入 Faker:

import faker
  1. 1. 创建 Faker 实例:

fake = faker.Faker()
  1. 1. 使用 Faker 生成数据:

fake.name()  # 生成一个姓名
fake.address()  # 生成一个地址
fake.phone_number()  # 生成一个电话号码
fake.email()  # 生成一个电子邮件地址
fake.company()  # 生成一个公司名称
fake.product_name()  # 生成一个产品名称
fake.price()  # 生成一个价格

Faker 还提供了许多其他方法来生成不同类型的数据。有关更多信息,请参阅 Faker 的官方文档。

生成海量”真实”模拟数据

核心函数

import faker
fake = faker.Faker('en_US')

def generate_person(seed):
    person = {
        'name': fake.name(),
        'city': fake.city(),
        'state': fake.state(),
        'zip_code': fake.zipcode(),
        'country': fake.country(),
        'email': fake.email(),
        'job': fake.job(),
        'company': fake.company(),
        'ssn': fake.ssn(),
        'birthdate': fake.date_of_birth(),
        'phone_number': fake.phone_number()
    }
    return person

创建UDF

import duckdb

con.create_function(
    'generate_person',
    generate_person,
    ['double'],
    duckdb.struct_type({
        'name''VARCHAR',
        'city''VARCHAR',
        'state''VARCHAR',
        'zip_code''VARCHAR',
        'country''VARCHAR',
        'email''VARCHAR',
        'job''VARCHAR',
        'company''VARCHAR',
        'ssn''VARCHAR',
        'birthdate''DATE',
        'phone_number''VARCHAR'
    })
)

生成海量数据

con.sql("""
CREATE OR REPLACE TABLE people AS
SELECT person.* FROM (
    SELECT generate_person(random()) AS person
    FROM generate_series(1,10000)
)
"""
)

一句 SQL生成海量超真实模拟数据

UDF generate_person 在Apache Superset里的效果

 参考:

https://www.markhneedham.com/blog/2023/06/02/duckdb-dummy-data-user-defined-functions/




原文始发于微信公众号(alitrack):一句 SQL生成海量超真实模拟数据

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/219712.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!