diff --git a/source/_posts/conda.md b/source/_posts/conda.md new file mode 100644 index 0000000000000000000000000000000000000000..9c9463092811eaade47538218f9c7011af77bb9c --- /dev/null +++ b/source/_posts/conda.md @@ -0,0 +1,79 @@ +--- +title: 使用 conda 管理包 +categories: + - 笔记 +excerpt: 'conda 的简单实用' +description: 'conda 的简单实用' +date: 2024-01-09 10:17:19 +--- + + +## 安装 + +参考[官网](https://docs.conda.io/en/latest/miniconda.html%EF%BC%89%EF%BC%8C%E9%80%89%E6%8B%A9%E9%80%82%E5%90%88%E4%BD%A0%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%9A%84%E7%89%88%E6%9C%AC%EF%BC%8C%E7%84%B6%E5%90%8E%E4%B8%8B%E8%BD%BD%E3%80%82) + +## 常用命令 + +1. 创建一个新的环境: +``` +conda create --name env_name +``` +其中,`env_name`是你想要创建的环境的名称。 + +2. 激活/进入一个环境: +``` +conda activate env_name +``` +其中,`env_name`是你想要激活的环境的名称。 + +3. 退出当前环境: +``` +conda deactivate +``` + +4. 查看已安装的所有环境: +``` +conda env list +``` + +5. 删除一个环境: +``` +conda env remove --name env_name +``` +其中,`env_name`是要删除的环境的名称。 + +6. 安装包: +``` +conda install package_name +``` +其中,`package_name`是要安装的包的名称。 + +7. 更新包: +``` +conda update package_name +``` +其中,`package_name`是要更新的包的名称。 + +8. 删除包: +``` +conda remove package_name +``` +其中,`package_name`是要删除的包的名称。 + +9. 查找可用的包: +``` +conda search package_name +``` +其中,`package_name`是要查找的包的名称。 + +10. 导出/备份环境配置: +``` +conda env export > environment.yml +``` + +11. 从环境配置文件中创建一个新的环境: +``` +conda env create -f environment.yml +``` + +这些命令可以帮助你更好地使用`conda`。更多关于`conda`的使用方法,请参考[官方文档](https://docs.conda.io/en/latest/) \ No newline at end of file diff --git a/source/_posts/eralchemy2.md b/source/_posts/eralchemy2.md new file mode 100644 index 0000000000000000000000000000000000000000..9aa2734ae15aa89f23b673414e9ad28ac83d07dd --- /dev/null +++ b/source/_posts/eralchemy2.md @@ -0,0 +1,94 @@ +--- +title: 入坑eralchemy2 +categories: + - 项目问题积累 +excerpt: 'mac 安装依赖eralchemy2遇到的问题' +description: '' +date: 2024-01-09 10:22:06 +--- + +> mac 环境 + +## 简介 + +eralchemy2 从数据库或 SQLAlchemy 模型生成实体关系(ER)图。 + +## 安装 + +```bash +pip install eralchemy2 +``` + +### 遇到错误 + +```log +pygraphviz/graphviz_wrap.c:3020:10: fatal error: 'graphviz/cgraph.h' file not found + #include "graphviz/cgraph.h" + ^~~~~~~~~~~~~~~~~~~ + 1 error generated. + error: command '/usr/bin/clang' failed with exit code 1 + [end of output] + note: This error originates from a subprocess, and is likely not a problem with pip. + ERROR: Failed building wheel for pygraphviz +Failed to build pygraphviz +ERROR: Could not build wheels for pygraphviz, which is required to install pyproject.toml-based projects +``` + +### 问题解决 + +使用 pip 和 venv 尝试了网络上大部分的教程,均失败告终。最后使用 conda 安装成功。(神奇的 python 包版本管理工具) + +1. 初始 conda 环境,参考文档 + +2. 安装命令 + +```bash +conda install --channel conda-forge eralchemy2 +``` + +> 可能还需要安装 graphviz: `brew install graphviz` + + +## 使用 + +```python +from eralchemy2 import render_er + +## Draw from database +render_er("postgresql+psycopg2://username:password@hostname:5432/databasename", 'er.png') +``` + +> 注意:postgresql+psycopg 可能会报错以下错误,修改为 postgresql+psycopg2 即可 + +```log +Traceback (most recent call last): + File "/baseDir/lib/python3.12/site-packages/eralchemy2/main.py", line 298, in render_er + tables, relationships = all_to_intermediary(input, schema=schema) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/baseDir/lib/python3.12/site-packages/eralchemy2/main.py", line 191, in all_to_intermediary + return database_to_intermediary(filename_or_input, schema=schema) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/baseDir/lib/python3.12/site-packages/eralchemy2/sqla.py", line 102, in database_to_intermediary + engine = create_engine(database_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 2, in create_engine + File "/baseDir/lib/python3.12/site-packages/sqlalchemy/util/deprecations.py", line 281, in warned + return fn(*args, **kwargs) # type: ignore[no-any-return] + ^^^^^^^^^^^^^^^^^^^ + File "/baseDir/lib/python3.12/site-packages/sqlalchemy/engine/create.py", line 601, in create_engine + dbapi = dbapi_meth(**dbapi_args) + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/baseDir/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/psycopg.py", line 378, in import_dbapi + import psycopg +ModuleNotFoundError: No module named 'psycopg' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/baseDir/pip/test.py", line 5, in + render_er("postgresql+psycopg://username:password@hostname:5432/databasename", 'erd.png') + File "/baseDir/lib/python3.12/site-packages/eralchemy2/main.py", line 310, in render_er + module_name = e.message.split()[-1] + ^^^^^^^^^ +AttributeError: 'ModuleNotFoundError' object has no attribute 'message' +``` \ No newline at end of file diff --git a/source/_posts/master-data.md b/source/_posts/master-data.md new file mode 100644 index 0000000000000000000000000000000000000000..531e668d31db93b8cb0adcead150b6ca668722a8 --- /dev/null +++ b/source/_posts/master-data.md @@ -0,0 +1,58 @@ +--- +title: 主数据 +categories: + - 默认 +excerpt: '主数据(Master Data)是具有共享性的基础数据,可以在企业内跨越各个业务部门被重复使用的,因此通常长期存在且应用于多个系统。' +description: '主数据(Master Data)是具有共享性的基础数据,可以在企业内跨越各个业务部门被重复使用的,因此通常长期存在且应用于多个系统' +date: 2024-01-04 21:04:06 +--- + +## 基本定义 + +主数据(Master Data)是指在一个组织内部跨多个系统、应用程序和业务过程中共享、使用和维护的关键业务实体的核心数据。这些数据通常包括客户、供应商、员工和其他重要的业务对象的信息。 + +主数据的目的是确保数据在组织内的一致性、准确性和可靠性。 + +## 主数据的特征 + +- 关键性:主数据包含组织内最关键的业务实体信息,如客户、产品、供应商等。这些数据对业务运营和决策过程至关重要。 +- 共享性:主数据是跨部门、跨系统高度共享的数据。 +- 持久性:与交易数据相比主数据是相对稳定的,变化频率较低。变化频率较低并不意味着一成不变,例如:交易数据、人员调动。 + +- 超越业务:主数据是跨越了业务界限,在多个业务领域中被广泛使用的数据,其核心属性也是来自业务。例如:物料主数据,它有自身的自然属性,如:规格、材质,也有业务赋予的核心属性,如:设计参数、工艺参数、采购、库存要求、计量要求、财务要求等 +- 超越部门:主数据是组织范围内共享的、跨部门的数据,它具有跨部门业务协同的特性。 +- 超越系统:主数据管理系统是信息系统建设的基础,它服务于但是高于其它业务信息系统,因此对主数据的管理要集中化、系统化、规范化。 +- 超越技术:由于主数据要满足跨部门的业务协同,因而必须适应采用不同技术规范的不同业务系统,从来不会局限于一种特定的技术。主数据的集成技术是多样的,如:webservice、REST、ETL、MQ、HTTP等。 + +## 与其他数据的关系 + +主数据与其他类型的数据有密切的关系,它们在组织内相互依赖并共同支持业务运营和决策过程。以下是主数据与其他数据类型之间的一些关系: + +- 交易数据:交易数据是指记录业务活动(如销售订单、采购订单、发票等)的数据。交易数据通常与主数据密切相关,因为它们包含了与主数据实体(如客户、产品、供应商等)相关的信息。例如,销售订单可能包含客户信息、产品信息以及价格等主数据。主数据为交易数据提供了基础信息和上下文,有助于实现业务过程的有效执行和监控。 +- 元数据:元数据是描述其他数据的数据,例如数据的结构、格式、定义、来源等。元数据在主数据管理过程中起着重要作用,因为它有助于识别、整合、清洗和标准化来自不同来源的主数据。通过使用元数据,组织可以确保主数据的一致性、准确性和可靠性。 +- 参照数据:参照数据是一种用于支持其他数据的标准化和分类的数据,例如固定值列表、代码表、行业标准、度量单位等。参照数据在主数据管理过程中具有重要作用,因为它们有助于实现主数据的一致性和标准化。通过使用参照数据,组织可以确保主数据在不同系统和业务过程中保持一致。 +- 分析数据:分析数据是用于支持决策和分析的数据,通常是通过对原始数据(如主数据和交易数据)进行汇总、转换和加工生成的。主数据为分析数据提供了关键的基础信息,确保分析结果的准确性和可靠性。例如,在进行销售分析时,需要使用客户数据、产品数据等主数据来对销售数据进行分组和归类。 + +## 主数据管理的常见问题 + +- 数据入口多,重复录入、一物多码、多码一物 +- 数据分类、数据编码不统一、不一致 +- 关键数据项为空或填写错误、填写不规范 +- 主数据的质量不高 +- 存在数据孤岛,异构系统数据没有打通 + +## 一些常用的概念 + +### 数据清洗 + +数据清洗是指对原始数据进行处理和修正,以去除错误、不一致或不完整的数据,使其符合分析或建模的要求。数据清洗是数据预处理的一个重要步骤,旨在提高数据的质量和准确性。 + +在数据清洗过程中,可能会执行以下操作: + +缺失值处理:处理数据中的缺失值,可以通过填充、删除或插值等方法来处理缺失值。 +异常值处理:检测和处理数据中的异常值,例如使用统计方法或领域知识进行异常值的处理。 +数据格式转换:将数据转换为正确的格式,例如将字符串转换为日期时间格式。 +数据去重:删除数据中的重复记录,确保数据的唯一性。 +数据规范化:对数据进行标准化或归一化处理,以便进行比较或分析。 +数据类型校验:检查数据类型是否符合预期,并进行必要的转换或修正。 +数据一致性检查:检查数据中的逻辑错误或不一致性,并进行修正。 \ No newline at end of file