我目前正在开发一个将部署在google云空间中的血统系统,目标是使用审计日志提取和解析从BigQuery执行的SQL查询,并从中创建一个谱系。我探索了几个现有的产品,但最终决定自己开发。
我偶然发现了谷歌的POC和文档(https://cloud.google.com/architecture/building-a-bigquery-data-lineage-solution)的数据沿袭,这使我探索了zetaSQL的使用。
我能够解析简单的查询并使用Analyzer.extractTableNamesFromStatement(query)和Analyzer.analyzeStatement(query, analyzerOptions, simpleCatalog从其中提取引用的表和输出列。然而,我想知道zetaSQL是否有能力在下面实现这些事情,如果是这样的话,如果您能给我一些例子或路径,那将是非常有帮助的。
ResolvedNodes
此外,我还在探索SimpleCatalog的用法,我想知道。
当引用表已经从查询中可用时,为什么zetaSQL需要表目录的注册?我有一条线索,它在后台做了很多检查,但这些检查是什么?,
谢谢。
发布于 2022-08-23 05:42:42
我将回答我自己的第一个问题,这似乎取决于节点的类型。例如,如果您试图获取应用在列上的函数的谱系,我们可以使用ResolvedFunctionCall获得应用的转换,然后您可以访问节点ResolvedColumnRef,这使您能够获得该表达式的源列。
https://stackoverflow.com/questions/73371169
复制相似问题