33、满足SAS数据仓库用户与开发者需求的数据管理策略

满足SAS数据仓库用户与开发者需求的数据管理策略

1. 数据仓库中跨数据集连接与外键价值

在数据输出中,我们能看到四个原生变量,随后是来自 vet_b y5_p75_earnings 变量、来自 xwalk_b State_Abbrev State_Desc 变量,以及来自 ahd_a Number_Hospitals Staffed_Beds 变量。

将AHD数据集中的医院数据附加到数据仓库的过程较为复杂,因为需要附加一个交叉引用数据集。不过,这一操作整体上提升了数据仓库的性能。现在,如果要附加一个州变量未采用FIPS代码格式的数据集,我们会有更大的灵活性。可以使用 State_Abbrev State_Desc 作为索引来合并其他数据。实际上,使用数据仓库中数据的其他分析师可以请求这些索引,从而能够从仓库外的其他数据集中引入更多数据。因此,引入大量外键,尤其是针对地理区域的外键,能够显著提升数据系统的价值,并满足分析师用户的需求。

通过这个示例,我们练习了如何使用交叉引用数据集来连接不同数据集中的变量。

2. 跨时间的数据交叉引用

BRFSS是一个每年都可获取的数据集示例。由于它是一项横断面调查,每年调查的人群不同,但问题基本相同,所以大多数变量年与年之间保持一致。除了调查数据集,还有一些基于实时业务系统的年度行政数据集,例如医疗成本与利用项目(HCUP)数据集。这些数据集包含美国医疗保健机构的数据,由于文件规范多年来变化不大,新的年度HCUP数据文件通常与以前的文件结构相同。

然而,由于环境的变化,调查和业务环境中的变量都会随时间改变。对于HCUP,医疗环境的变化可能会导致其从医疗保健机构收集的具体变量发生变化;在BRFSS中,健康和医疗保健方面的变化可能会导致问题的改变。

以BRFSS中关于大麻使用的问题为例,21世纪初,美国大多数州在州一级将大麻定为非法,但随着时间推移,各州开始以各种形式将大麻的购买和使用合法化。由于许多州批准了大麻用于医疗用途,BRFSS最终不得不考虑添加关于大麻使用的新问题。

对以往BRFSS年度数据集的代码手册进行回顾后发现,直到2016年,大麻相关问题才被纳入核心调查。以下是2016年、2017年和2018年BRFSS数据集中包含的五个与大麻相关问题的回顾:

年份 变量 描述
2016、2017 MARIJANA “在过去30天里,你使用大麻或哈希什的天数是多少?” 用于衡量受访者是否使用大麻
2018 MARIJAN1 未在代码手册中明确记录,但编码方式与MARIJANA类似
2016 USEMRJNA 关于大麻使用方式的变量,接受多个答案
2017 USEMRJN1 关于大麻使用方式的变量,不接受多个答案
2018 USEMRJN2 关于大麻使用方式的变量,不接受多个答案

从这些变量中我们可以观察到:
- 2018年数据集中的 MARIJAN1 USEMRJN2 变量在表中有所体现,且之前未被使用过。
- 2016年和2017年,衡量受访者是否使用大麻的变量表述为 “在过去30天里,你使用大麻或哈希什的天数是多少?”,名为 MARIJANA 。如果受访者回答了使用天数,则会被询问下一个关于使用方式的问题。
- 2018年,代码手册中没有与 MARIJANA 类似的变量,但有一个未记录的名为 MARIJAN1 的变量,其编码方式似乎相同。
- USEMRJNA USEMRJN1 USEMRJN2 都是关于大麻使用方式的变量,但编码不同,且在不同年份被询问。
- USEMRJNA USEMRJN1 USEMRJN2 不同,它接受多个答案,而后两者只要求一个答案。
- USEMRJN1 USEMRJN2 使用相同的答案列表,但问题表述不同。

如果数据仓库希望存储过去的数据,甚至是这些变量出现之前的数据,并且希望对仓库中所有年份的数据进行分析时都能使用大麻相关变量,由于这些变量最初不存在,且编码在几年内发生了变化,一种可行的方法是创建交叉引用变量。我们将从为BRFSS中的大麻变量创建分类交叉引用变量开始。

3. 分类变量的交叉引用

我们专注于为大麻使用变量开发交叉引用。首先,查看2016年收集的 USEMRJNA 变量。根据代码手册,该变量的编码如下:
- 1 = 吸食(例如,用烟卷、水烟筒、烟斗或雪茄烟)
- 2 = 食用(例如,在布朗尼蛋糕、蛋糕、饼干或糖果中)
- 3 = 饮用(例如,在茶、可乐或酒精中)
- 4 = 汽化(例如,使用类似电子烟的汽化器或其他汽化设备)
- 5 = 涂抹(例如,使用蜡或浓缩物)
- 6 = 其他方式使用
- 7 = 不知道/不确定
- 9 = 拒绝回答
- 缺失(用句点表示) = 未询问

查看2016年数据集中该变量的实际内容时,我们发现一个变量可以包含多个答案。所有答案都被塞进同一个变量中。例如,如果受访者回答1表示吸食,回答2表示食用,他们的答案将被记录为12。尽管数字12不是一个数值度量,只是表示代码1和2的组合,但它也可以被视为所有包含多个答案中的最小值。因此,变量编码大于12的记录表示受访者对该问题给出了多个答案。

这种数据存储方式一方面比较混乱,难以分析;另一方面,这个问题产生了关于受访者的丰富数据。大多数受访者只回答了一种方式,因此当出现多个答案时,这些答案非常有价值。然而,由于 USEMRJNA 变量背后的问题和答案与 USEMRJN1 USEMRJN2 背后的问题和答案差异很大,我们可以预见在不同时间对这些变量进行交叉引用可能会很困难。

现在,查看 USEMRJN1 USEMRJN2 的编码。实际上,除了不接受多个答案外,它们的编码与 USEMRJNA 相同。需要注意的是, USEMRJN1 USEMRJN2 的唯一区别在于问题的表述方式,而不是可能的答案。由于 USEMRJN1 USEMRJN2 的问题表述几乎相同,人们可能会想将这两个变量存储在一个变量中。毕竟,它们使用相同的编码系统。

然而,这是一种不好的做法:
- 尽管 USEMRJN1 USEMRJN2 共享相同的编码系统,但从技术上讲,它们是不同的变量,因为它们是对不同问题的回答。
- USEMRJN1 USEMRJN2 使用的编码系统处理了这些变量中的所有代码,但没有考虑到 USEMRJNA 变量中出现的多个答案的编码。在 USEMRJN1 USEMRJN2 使用的编码系统中,没有多个答案的代码。
- 此外, USEMRJN1 USEMRJN2 的编码系统使用缺失(用句点表示)来表示问题未被询问(因为受访者表示在过去30天内没有使用大麻)。但没有代码来表示该变量在数据集创建时不存在,而这正是2016年之前的旧BRFSS数据所需要的代码。

解决方案是创建一个全新的编码系统来解决所有这些问题:
- 新的编码系统应该有一个代码来表示给出了多个答案。这个代码可以用于2016年数据集中 USEMRJNA 答案为12或更大的记录。
- 新的编码系统还应该有一个代码来表示问题在数据集创建时不存在。

由于我们正在创建一个新的编码系统,不妨对原生编码系统进行改进。原始编码系统的级别太多,不利于分析。因此,我们可以合并一些级别:
- 通过对不同年份变量使用 PROC FREQ 进行研究发现,最常见的级别是1,即吸食。
- 研究还发现,级别2和3(分别指食用和饮用)很少被提及,可以合理地合并在一起,放入“食用”类别。
- 此外,发现级别5和6(分别指涂抹或其他使用方式)的频率也很低,因此可以合并到“其他”类别。
- 由于2016年数据集中的多个答案也很少见,可以将它们添加到“其他”类别,扩展为“其他或多个答案”。
- 由于7、9和缺失都表示未知值,可以将它们合并到“未知”类别。
- 最后,可以添加一个“时间段内不可用”类别,以适应在变量存在之前的2016年之前数据集中对该变量进行编码。

我们将新的编码系统称为 USETYPE
- 1 = 吸食
- 2 = 食用
- 3 = 汽化
- 4 = 其他或多个答案
- 8 = 时间段内不可用
- 9 = 未知

现在我们已经设计了分类交叉引用变量,可以修改ETL协议以生成 USETYPE 。对于2016年之前的数据集,需要使用以下编码将 USEMRJNA 重新编码为 USETYPE

USEMRJNA编码 USETYPE编码 描述
1 1 吸食
2、3 2 食用
4 3 汽化
5、6 4 其他或多个答案
7、9、缺失 9 未知
2016年之前 8 时间段内不可用

在处理2016年数据集时,可以编写ETL代码根据 USEMRJNA 的原生编码创建 USETYPE 。以下是如何将2017年和2018年数据集中的 USEMRJN1 USEMRJN2 交叉引用到 USETYPE 的示例:

USEMRJN1/USEMRJN2编码 USETYPE编码 描述
1 1 吸食
2、3 2 食用
4 3 汽化
5、6 4 其他或多个答案
7、9、缺失 9 未知

以下是一个在2018年BRFSS数据提取中创建 USETYPE 的ETL代码示例:

data brfss_e;
    set brfss_d;
    USETYPE = 9;
    if USEMRJN2 = 1
        then USETYPE = 1;
    if USEMRJN2 in (2, 3)
        then USETYPE = 2;
    if USEMRJN2 = 4
        then USETYPE = 3;
    if USEMRJN2 in (5, 6)
        then USETYPE = 4;
RUN;
PROC FREQ data = brfss_e;
    tables USEMRJN2 * USETYPE / list missing;
RUN;

这段代码输入 brfss_d 并输出 brfss_e ,在数据步骤中,根据 USEMRJN2 的值对 USETYPE 进行编码。最后,运行一个双向 PROC FREQ 来确保编码正确。

在这一部分,我们讨论了如何将与大麻使用方式相关的分类变量交叉引用到标准系统 USETYPE 中。接下来,我们将讨论如何对随时间变化的连续变量进行交叉引用。

4. 连续变量的交叉引用

对于 MARIJANA MARIJAN1 ,经过研究,我们怀疑这两个变量涉及相同的问题和答案集,唯一的变化是BRFSS在2017年到2018年将变量名从 MARIJANA 改为了 MARIJAN1 。在这种情况下,人们可能会试图通过重命名其中一个变量来解决问题。例如,如果在2017年处理文件时使用变量名 MARIJANA ,可能会想在2018年文件中简单地将原生 MARIJAN1 变量重命名为 MARIJANA

然而,这种方法存在问题,因为在ETL过程中不应编辑原生变量,即不应重新编码或重命名它们。这是因为原生变量可能需要在其他ETL中使用,需要作为标准度量保持不变。如果想为了交叉引用的目的将这两个变量合并为一个变量,可以简单地创建一个新的变量名,并将它们都编码到这个新变量中。

假设我们创建一个新变量 MARDAYS
- 在对2017年文件中的 MARIJANA 变量进行ETL时,创建一个名为 MARDAYS 的新变量,并将 MARIJANA 复制到其中。
- 在对2018年文件中的 MARIJAN1 变量进行ETL时,同样创建一个名为 MARDAYS 的新变量,并将 MARIJAN1 复制到其中。

MARIJANA MARIJAN1 是一个简单的交叉引用案例,因为只是变量名发生了变化。对于其他连续变量,交叉引用可能会更加复杂:
- 财务变量 :表示货币的变量,如工资、房屋价值和商业贷款水平,需要每年重新计算以调整通货膨胀,以便在不同年份之间进行比较。常见的做法是创建交叉引用变量来表示某一年的价值(例如,2016年美元价值、2017年美元价值和2018年美元价值)。
- 公式派生变量 :一些连续变量,如医疗保健中的死亡率指数,是通过公式创建的。有时,这些标准公式会发生变化。在这种情况下,业务规则将决定数据仓库应该怎么做。如果两个公式仍在使用,那么仓库应该计算两个变量并提供给用户。如果旧公式正在逐步淘汰,那么只应提供使用新公式的变量。

需要注意的是,在数据仓库中,构建和维护仓库的开发人员可能会与分析师用户的需求脱节。管理层应将分析师用户视为服务对象,鼓励他们提供如何更好服务的建议。在考虑获取新数据集或更改数据集处理方式时,可以将分析师用户和开发人员组成焦点小组,共同设计新的处理方式和变量。当数据仓库以纵向方式存储数据集时,会有许多分析师成为这些数据的常客。可以对这个用户群体进行市场调研,了解他们对交叉引用变量以及仓库中其他功能(如分析工具、文档、可视化和报告)的需求。

5. 服务仓库开发者的数据管理

数据管理对于服务仓库的分析师用户很有帮助,同时也有助于仓库开发者满足用户需求。不过,开发者自身也有数据管理方面的需求,主要体现在两个重要功能上:管理数据管理委员会和维护并提供专门针对开发者的数据整理文件。

5.1 管理数据管理委员会

数据湖或数据仓库周围有多个不同的利益相关者群体,除了分析师用户和开发者这些明显的群体外,还包括那些虽不直接参与项目,但在数据系统中有利益关系的群体,有些利益相关者可能从未登录过数据系统。

利益相关者群体包括发起数据系统开发的领导团队,以及数据在系统中有所体现的实体代表。例如,一家使用数据仓库处理理赔数据的健康保险公司,理赔部门负责理赔裁决的人员和与医疗服务提供商及机构签订合同的人员可能不使用数据仓库,但他们是数据仓库的利益相关者,因为他们的数据包含在其中,并且希望数据能得到正确呈现。

根据数据系统的功能和服务对象的不同,可能还有其他利益相关者群体,如根据数据系统报告做决策的群体以及开发报告的群体。因此,识别所有相关利益相关者群体对于建立数据管理委员会至关重要,因为在这样的委员会中,每个利益相关者群体都需要有代表。

在实践中,数据管理委员会通常有不同的名称,如数据委员会或X委员会(X代表数据系统的名称)。委员会通常由管理数据系统的部门领导担任主席,这通常是一个固定职位(会指定同一部门的其他领导作为后备主席)。委员会的其他成员凭借其在公司中的职位加入。例如,在健康保险领域,理赔部门主任和合同部门主任可能会被要求加入委员会,这样无论谁担任这些职位,都需要完成委员会的工作。

由于数据管理委员会通常由忙碌的领导组成,会议并不频繁,通常每月或每季度举行一次。需要领导处理的数据系统问题会被收集到议程中,并在委员会会议上讨论。主席所在的部门管理委员会并记录委员会的活动。完成委员会的工作通常包括制定和传播新的政策和程序,并在委员会的支持下实施。

做好数据管理委员会的管理工作是满足开发者需求的好方法。因为开发者需要领导批准的深思熟虑的政策作为指导,数据管理委员会可以为开发者提供一个向领导提出想法和问题的平台。所以,数据管理委员会不仅有助于改善数据系统的功能,还能支持数据系统开发者。

5.2 提供整理和其他支持

除了从数据管理委员会获得支持外,仓库开发者还可以从有用且高质量的数据整理文件中得到支持。一些整理和支持文件既可以支持分析师,也对开发者有用,这些文件主要来自两个来源:
- 外部组织 :数据系统中托管的大多数外部组织整理内容是关于数据系统中原始数据集的文档。使用相同原始数据集的外部组织也可能会生成由数据系统托管的整理内容。
- 内部来源 :在数据系统内部工作的员工、顾问等也会生成整理文件。虽然其中一些可能是关于数据系统中托管的原始数据集,但大多数内部编写的整理内容是为了记录数据湖或仓库的构建方式,以及其维护和管理的政策和程序。

以下是常见整理文件的总结,列出了来源和主要用户群体:
| 整理项目 | 来源 | 主要用户群体 |
| ---- | ---- | ---- |
| 原始数据集文档 | 外部组织 | 分析师、开发者 |
| 数据湖/仓库构建及管理文档 | 内部来源 | 开发者 |
| 政策和程序文档 | 内部来源 | 开发者 |

满足SAS数据仓库用户与开发者需求的数据管理策略

6. 数据管理对开发者与用户的综合影响

数据管理在满足仓库开发者和用户需求方面起着至关重要的作用。对于开发者而言,数据管理委员会提供的政策指导和数据整理文件的支持,有助于他们更高效地进行数据仓库的开发和维护工作。而对于用户,尤其是分析师用户,交叉引用变量的创建和数据仓库中数据的合理组织,使得他们能够更方便地进行数据分析和挖掘。

从开发者的角度来看,管理数据管理委员会为他们提供了一个与各利益相关者沟通的平台。通过这个平台,开发者可以了解到不同利益相关者对数据系统的需求和期望,从而在开发过程中更好地平衡各方利益。例如,在健康保险数据仓库的开发中,理赔部门和合同部门的代表参与数据管理委员会,开发者可以从他们那里了解到理赔数据和合同数据的具体需求,进而优化数据仓库的设计和开发。

数据整理文件的提供也为开发者节省了大量的时间和精力。外部组织提供的原始数据集文档可以帮助开发者快速了解数据的来源和含义,而内部编写的数据湖/仓库构建及管理文档则为开发者提供了详细的开发指南。这些文件使得开发者能够更加专注于数据处理和系统优化的工作。

对于分析师用户来说,交叉引用变量的创建使得他们能够更轻松地处理随时间变化的数据。以BRFSS数据集中的大麻变量为例,通过创建 USETYPE MARDAYS 等交叉引用变量,分析师可以将不同年份的数据进行统一处理,从而更准确地分析大麻使用情况的变化趋势。此外,数据仓库中数据的合理组织和整理也为分析师提供了更好的数据分析环境,他们可以更方便地获取所需的数据,并使用各种分析工具进行深入分析。

7. 实施数据管理的关键步骤

为了有效地实施数据管理,满足开发者和用户的需求,可以按照以下步骤进行:

7.1 识别利益相关者

首先,需要识别数据湖或数据仓库周围的所有利益相关者群体。这包括分析师用户、开发者、发起数据系统开发的领导团队以及数据在系统中有所体现的实体代表等。可以通过以下流程来识别利益相关者:
1. 列出与数据系统相关的所有部门和人员。
2. 分析每个部门和人员与数据系统的关联程度和利益关系。
3. 确定哪些部门和人员是数据系统的利益相关者。

7.2 建立数据管理委员会

在识别利益相关者之后,需要建立数据管理委员会。委员会的成员应包括各利益相关者群体的代表。建立数据管理委员会的步骤如下:
1. 确定委员会的名称和职责。
2. 邀请各利益相关者群体的代表加入委员会。
3. 选举委员会主席和确定后备主席。
4. 制定委员会的会议规则和议程。

7.3 收集和整理数据

为了支持开发者和用户的工作,需要收集和整理相关的数据。这包括从外部组织获取原始数据集文档,以及内部编写数据湖/仓库构建及管理文档和政策和程序文档等。具体步骤如下:
1. 确定需要收集和整理的数据类型和范围。
2. 与外部组织合作,获取原始数据集文档。
3. 组织内部人员编写数据湖/仓库构建及管理文档和政策和程序文档。
4. 对收集和整理的数据进行审核和验证。

7.4 创建交叉引用变量

对于随时间变化的数据,需要创建交叉引用变量来统一处理不同年份的数据。以BRFSS数据集中的大麻变量为例,创建交叉引用变量的步骤如下:
1. 分析不同年份变量的编码和含义。
2. 设计新的编码系统,如 USETYPE
3. 修改ETL协议,根据新的编码系统生成交叉引用变量。
4. 对生成的交叉引用变量进行测试和验证。

8. 数据管理的未来发展趋势

随着数据量的不断增加和数据分析需求的不断提高,数据管理将面临新的挑战和机遇。以下是数据管理未来可能的发展趋势:

8.1 智能化数据管理

随着人工智能和机器学习技术的发展,数据管理将越来越智能化。例如,智能数据整理工具可以自动识别和处理数据中的异常值和缺失值,智能数据分类工具可以根据数据的特征自动对数据进行分类和标注。这些智能化工具将大大提高数据管理的效率和准确性。

8.2 数据安全和隐私保护

随着数据泄露事件的不断发生,数据安全和隐私保护将成为数据管理的重要关注点。未来的数据管理系统将采用更加先进的加密技术和访问控制技术,确保数据的安全性和隐私性。同时,数据管理系统还将遵守各种数据保护法规和标准,如欧盟的《通用数据保护条例》(GDPR)。

8.3 数据可视化和交互性

为了更好地满足用户的需求,数据管理系统将越来越注重数据可视化和交互性。未来的数据管理系统将提供更加直观和易用的可视化界面,用户可以通过可视化界面快速了解数据的分布和趋势,并进行交互式分析。例如,用户可以通过拖动滑块、选择图表类型等方式来改变数据的展示方式和分析结果。

9. 总结

数据管理在满足SAS数据仓库开发者和用户需求方面起着至关重要的作用。通过管理数据管理委员会和提供数据整理文件,开发者可以获得更好的支持和指导,从而更高效地进行数据仓库的开发和维护工作。通过创建交叉引用变量和合理组织数据,用户可以更方便地进行数据分析和挖掘。

在实施数据管理时,需要识别利益相关者、建立数据管理委员会、收集和整理数据以及创建交叉引用变量等。同时,随着技术的发展,数据管理将朝着智能化、数据安全和隐私保护以及数据可视化和交互性等方向发展。

为了更好地理解数据管理的流程,以下是一个mermaid格式的流程图:

graph LR
    A[识别利益相关者] --> B[建立数据管理委员会]
    B --> C[收集和整理数据]
    C --> D[创建交叉引用变量]
    D --> E[数据管理实施]
    E --> F[持续优化和改进]

总之,数据管理是一个持续的过程,需要不断地优化和改进,以适应不断变化的需求和技术环境。只有做好数据管理,才能充分发挥数据仓库的价值,为企业和组织提供更好的决策支持。

【unet改进实战】基于unet+SCSE注意力机制改进实现的【自动驾驶】图像语义分割+项目说明书+数据集+完整代码 项目概述 本项目基于PyTorch框架构建了一个通用图像分割系统,全面支持二分类及多类别分割任务。 系统功能 该系统提供从数据预处理到模型训练、验证评估的全流程解决方案,具备高度可配置性和实用性: 数据处理:支持自定义图像和掩码文件格式(如.jpg、.png等),自动处理不连续标签值,集成多种数据增强技术提升模型泛化能力 模型架构:基于UNet实现,可通过参数灵活调整输入尺寸、卷积通道数等,兼容不同类别数量的分割任务(通过--num_classes参数指定) 训练功能:支持GPU加速,提供学习率、批次大小等超参数配置选项,实时记录损失曲线和评估指标(如IoU、Dice系数),自动保存最优模型权重 使用流程 按规范组织数据集(图像掩码文件需名称对应,分别存放在images/masks子目录) 通过命令行参数启动训练,可指定: 数据路径(--data_dir) 学习率(--learning_rate) 标签映射规则(--label_mapping)等 系统输出包含: 模型权重文件(.pth) 训练曲线可视化图表 指标日志文件 注意事项 掩码图像应为单通道灰度图,标签值为整数 多分类任务推荐使用one-hot编码掩码 项目依赖主流科学计算库(PyTorch、NumPy)及可视化工具(Matplotlib),安装简便 应用领域 该系统适用于医学影像、遥感等领域的语义分割任务,兼顾易用性扩展性。用户可通过调整UNet深度或添加注意力机制等方式进一步优化性能。 【项目说明书】包含完整代码实现原理讲解。https://blog.youkuaiyun.com/qq_44886601/category_12858320.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值