簡體   English   中英

如何在 BigQuery 過程中將表名作為參數傳遞?

[英]How to pass a table name as a parameter in BigQuery procedure?

我正在嘗試構建需要將表名作為參數傳遞的 bigquery 存儲過程。 我的代碼是:

CREATE OR REPLACE PROCEDURE `MKT_DS.PXV2DWY_CREATE_PROPERTY_FEATURES` (table_name STRING)

BEGIN
      ----step 1
      CREATE OR REPLACE TABLE `MKT_DS.PXV2DWY_CREATE_PROPERTY_FEATURES_01` AS 
      SELECT DISTINCT XX.HH_ID, A.ECR_PRTY_ID, XX.ANCHOR_DT
      FROM table_name XX 
      LEFT JOIN 
            (  
            SELECT DISTINCT HH_ID, ECR_PRTY_ID
            FROM `analytics-mkt-cleanroom.Master.EDW_ECR_ECR_MAPPING`
            WHERE  HH_ID NOT LIKE 'U%'
            AND ECR_PRTY_ID IS NOT NULL
            )A
            ON XX.HH_ID = A.HH_ID----one (HH) to many (ecr) 
      ;
 
 END;


CALL MKT_DS.PXV2DWY_CREATE_PROPERTY_FEATURES(`analytics-mkt-cleanroom.MKT_DS.Home_Services_Multi_Class_Aesthetic_Baseline_Final_Training_Sample`);

在這里這里關注了幾個類似的問題,嘗試編寫上面的EXECUTE IMMEDIATE版本但無法計算出正確的語法。

我認為問題是; 我代碼中的SELECT語句選擇了多列XX.HH_ID, A.ECR_PRTY_ID, XX.ANCHOR_DT ,而EXECUTIVE IMMEDIATE設置僅適用於一列。 但我不確定。 請指教。 謝謝你。

我基本上是在嘗試為數據管道構建編寫存儲過程。

希望下面有幫助。

  1. 將參數作為字符串傳遞。
CALL MKT_DS.PXV2DWY_CREATE_PROPERTY_FEATURES(`analytics-mkt-cleanroom.MKT_DS.Home_Services_Multi_Class_Aesthetic_Baseline_Final_Training_Sample`);
-->
CALL MKT_DS.PXV2DWY_CREATE_PROPERTY_FEATURES('analytics-mkt-cleanroom.MKT_DS.Home_Services_Multi_Class_Aesthetic_Baseline_Final_Training_Sample');
  1. 使用EXECUTE IMMEDIATE ,因為不能將表名參數化為查詢中的變量。
      ----step 1
  EXECUTE IMMEDIATE FORMAT("""
      CREATE OR REPLACE TABLE `MKT_DS.PXV2DWY_CREATE_PROPERTY_FEATURES_01` AS 
      SELECT DISTINCT XX.HH_ID, A.ECR_PRTY_ID, XX.ANCHOR_DT
      FROM `%s` XX 
      LEFT JOIN 
            (  
            SELECT DISTINCT HH_ID, ECR_PRTY_ID
            FROM `analytics-mkt-cleanroom.Master.EDW_ECR_ECR_MAPPING`
            WHERE  HH_ID NOT LIKE 'U%%'
            AND ECR_PRTY_ID IS NOT NULL
            )A
            ON XX.HH_ID = A.HH_ID----one (HH) to many (ecr) 
      ;
  """, table_name);
  1. 在帶有附加%的格式字符串中轉義%
LIKE 'U%'
-->
LIKE 'U%%'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM