Условие динамического фильтра в процедуре BigQuery

Есть процедура, которая получает необходимые данные, а затем вставляет их в таблицу:
Возможно ли иметь параметр, который приводит к определенному условию фильтра, как я могу этого добиться?
Например, создав новый параметр с именем condition, что если пользователь введет 1, процедура будет использовать фильтр 1 и т. д.
см. пример кода ниже:

CREATE OR REPLACE PROCEDURE `peterwu.UDP_mem_profile_package`
                            (table_name STRING
                             , title_name STRING
                             , status_start_dt DATE
                             , status_end_dt DATE)
BEGIN
       -- 2. insert data
       EXECUTE IMMEDIATE format("""
              INSERT INTO `peterwu..UDP_OUTPUT_mem_profile_aggregated`
              (TITLE, GROUP_ORDER, GROUP_ID1, GROUP_NAME, MEM_CNT, TKT, SALES)
              SELECT @title_name
                     , 5
                     , COUNT(DISTINCT MEM_ID) MEM_CNT
                     , COUNT(DISTINCT CASE WHEN IS_TICKET = 1 THEN TKT_NO END) AS TICKET
                     , SUM(retail_price_amt) SALES
              FROM `peterwu.tlw_txn_since_2017`
              WHERE TRANS_DT BETWEEN @start_dt AND @end_dt
              AND MEM_ID IN (SELECT MEM_ID FROM `"""||table_name||"""`)

              /*========== FILTER CONDITION CONTROLED BY USER INPUT: FILTER 1 OR FILTER 2=========*/
              -- FILTER 1 --
              AND 
              ( 
                  SITE_ID BETWEEN '1A01' AND '1A02' OR
                  SITE_ID BETWEEN '1A03' AND '1A04'
              )
              AND
              -- FILTER 2 --
              ( 
                  SITE_ID BETWEEN '1S01' AND '1S02' OR
                  SITE_ID BETWEEN '1S03' AND '1S04'
              )
       """)
       USING status_start_dt as start_dt
             , status_end_dt as end_dt
             , title_name as title_name;       
END

Привет @Pete, ответ ниже помог вам в решении проблемы?

kiran mathew 08.02.2023 15:28
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вот мой пример кода, который пытается сделать то, что вы хотите.

в основном, чтобы ответить на ваш вопрос, можно использовать условное выражение, оцениваемое в предложении where. здесь я предположил, что входных условий два, и они могут быть назначены двум входным переменным и на основе которых может быть оценено предложение where.

CREATE OR REPLACE PROCEDURE myproject.zz_DataSet.procTest
                            ( title_name STRING
                             , condition1 string
                             , condition2 string)
BEGIN

  EXECUTE IMMEDIATE format ("""
    INSERT INTO myproject.zz_DataSet.zzProcTest (TITLE_NAME)
    SELECT firstname
    FROM myproject.zz_DataSet.tblOne
    WHERE "condition1" = if (@c1 is null,@c2 ,@c1)
    """
  )
  USING condition1 as c1,
        condition2 as c2;
END;

вот мой вызов процедуры. в этом случае условие 1 оценивается как истинное и, следовательно, вставляет условие1 в таблицу tblOne. надеюсь это поможет

call myproject.zz_DataSet.procTest("condition1","condition1","")

Другие вопросы по теме