Firebase集合流到BigQuery转换函数

syqv5f0l  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(117)

Firebase扩展“StreamCollectionstoBigQuery”允许配置用于将FirestoreDataJSON转换为显式BigQuery表字段的转换函数。https://firebase.google.com/products/extensions/firebase-firestore-bigquery-export
谁能给我一个示例函数或详细的文档?
谢谢,本

46qrfjad

46qrfjad1#

transform函数应该是一个HTTP Cloud Function,具有以下逻辑(从请求中获取输入对象,转换它,在响应中发送回来),如下面的CF框架所示:

exports.bqTransform = functions.https.onRequest(async (req, res) => {
    
   const inputPayload = req.body // JS Object
   // ...
   // Transform the object 
   // ...
   const outputPayload = {...}   // JS Object
    
   res.send(outputPayload);
    });

doc中所解释的,inputPayload对象(即req.body)包含一个data属性(它是一个数组),该属性包含Firestore文档的表示,如下所示:

{ 
  data: [{
    insertId: int;
    json: {
      timestamp: int;
      event_id: int;
      document_name: string;
      document_id: int;
      operation: ChangeType;
      data: string;  // <= String containing the stringified object representing the Firestore document data
    },
  }]
}

在代码中实现的转换将创建一个具有相同结构的对象(在上面的 backbone 示例中为outputPayload),其中data[0].json属性根据您的转换要求进行了调整。
下面是一个非常简单的例子,我们用一些静态数据完全改变了Firestore记录的内容。

exports.bqTransform = functions.https.onRequest(async (req, res) => {

    const inputPayload = req.body; 
    const inputData = inputPayload.data[0];

    const outputPayload = [{
        insertId: inputData.insertId,
        json: {
            timestamp: inputData.json.timestamp,
            event_id: inputData.json.event_id,
            document_name: inputData.json.document_name,
            document_id: inputData.json.document_id,
            operation: inputData.json.operation,
            data: JSON.stringify({ createdOn: { _seconds: 1664983515, _nanoseconds: 745000000 }, array: ["a1", "a2"], name: "Transformed Name" })
        },
    }]   

    res.send({ data: outputPayload });
});

相关问题