读取 SAS 文件以获取元信息

Read SAS file to get meta information

对数据科学技术非常陌生。目前正在阅读 SAS 文件 (.sas7dbat)。

能够使用以下方式读取文件:

SAS7BDAT('/dbfs/mnt/myMntScrum1/sasFile.sas7bdat') as f:
    for row in f:
      print(row)

行打印所有数据。

当我们在 SAS 查看器中查看 SAS 文件时,我们可以看到元数据,例如实际数据上使用的标签信息和变量(列名)

如何使用 Python 在 Spark (Databricks) 中读取此元数据?

Python 中的大多数数据分析是使用 pandas 库完成的,该库有一个名为 'read_sas' 的方法,它保留元数据,除非您被命令使用 spark I 强烈推荐pandas。这是一组针对 SAS 用户的说明:https://blog.dominodatalab.com/pandas-for-sas-users-part-1/

你试过了吗pyreadstat

可以直接读取元数据。

    import pyreadstat

    df, meta = pyreadstat.read_sas7bdat('/path/to/a/file.sas7bdat')

您可以使用名为 spark-sas7bdat 的 Spark 外部包来读取 sas_file_name.sas7bdat

以下是如何将其安装到 Spark 应用程序中 https://spark-packages.org/package/saurfang/spark-sas7bdat 以及其 github 页面上的一些示例 https://github.com/saurfang/spark-sas7bdat

然后就用Spark读取方法

spark.read.format("com.github.saurfang.sas.spark")
          .load("path to the sas_file_name.sas7bdat", inferLong=True)

如果您只对 metadata 感兴趣,您可以使用 pyreadstat 传递 metadataonly 参数作为 True,它不会读取任何数据,而只会读取元数据, 因此文件的大小不会影响读取元数据所需的时间。

import pyreadstat

df, meta = pyreadstat.read_sas7bdat('/dbfs/mnt/myMntScrum1/sasFile.sas7bdat', metadataonly=True)

请注意,当传递 metadataonly=True 时,df 将是一个空数据框,如果您同时需要数据和元数据,则可能需要省略此数据

您可以使用 meta.column_names_to_labels 访问变量标签,它会给出一个字典,其中变量名称是键,变量标签是值。

其他有用的元数据有:metadata.number_columnsmetadata.number_rowsmetadata.file_encodingmetadata.file_label

您可以在 pyreadstat documentation

找到可用元数据的完整列表