묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[LV3] Jetpack Compose - 그럴 듯한 다이어트 앱 만들기
Firebase Error message Flow 관련
안녕하세요, 강의 잘 듣고 있습니다.Jetpack Compose View 강의를 수강하면서 궁금한 점이 생겨 질문드립니다.강사님께서는 Error Message를 Flow로 collect하여 View에 전달하는 방식을 사용하셨는데,아래와 같은 상황에서는 에러 메시지가 출력되지 않는 문제가 발생합니다.사용자가 이메일 혹은 비밀번호 검증에 실패합니다.Firebase에서 "비밀번호 혹은 아이디가 틀렸습니다"라는 에러 메시지를 반환하고, Flow가 이를 collect하여 화면에 출력합니다.사용자가 이메일 또는 비밀번호를 수정한 후 다시 로그인 요청을 보냅니다.검증이 다시 실패하여 Firebase에서 동일한 에러 메시지를 반환합니다.하지만 Flow는 같은 값을 연속으로 emit하지 않기 때문에 View에서는 변경을 감지하지 못하고 에러 메시지가 출력되지 않습니다.사용자는 아무런 메세지가 없어 무슨 상황인지 모른다 이걸 해결하기 위해 errorMessage의 Flow의 값을 null 처리 해도 똑같습니다. 해당 문제를 해결할수 있는 방법이 있을까요?전 비록 Text을 쓰지 않고 SnackBar을 썼지만 저의 코드를 봐주시면 감사하겠습니다.viewModel : https://github.com/sonny8569/DietJetpackCompose/blob/main/app/src/main/java/com/sungil/jetpackcomposediet/ui/intro/IntroViewModel.kt Activity: https://github.com/sonny8569/DietJetpackCompose/blob/main/app/src/main/java/com/sungil/jetpackcomposediet/ui/intro/IntroActivity.kt view : https://github.com/sonny8569/DietJetpackCompose/blob/main/app/src/main/java/com/sungil/jetpackcomposediet/ui/intro/screen/LoginScreen.kt
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
몬스터 추적 강의 질문
안녕하세요 강의 잘 보고 있습니다 궁금한 내용 정리해서 질문드립니다. Init 관련 발음하실 때 아이닛 이라고 하시는 이유가 궁금? 합니다 보통 이닛 이라고 하지 않나요? 몬스터 추적 강의에서 Player 스크립트 작성할 때 FindClosetTarget(Spawner.m_Monster.ToArray()); 이렇게 ToArray 배열로 넘기는 부분이 있던데 꼭 배열로 넘겨야 하는지 궁금합니다 T로 받을거면 FindClosetTarget(Spawner.m_Monster); 이렇게 넘겨도 상관 없지 않을까 싶어서요
-
미해결Vue 3 & Firebase 10 커뮤니티 만들기 풀스택 - "활용편" (with Pinia, Quasar, Tiptap, VueUse)
Cross-Origin-Opener-Policy policy would block the window.closed call.
Pinia setup stores user 사용자 관리8분 32초에 아래 에러가 나오는데, 별다른 언급이 없는데,뒤에 해결을 하는지요?답변 주시면 감사하겠습니다. Cross-Origin-Opener-Policy policy would block the window.closed call.
-
해결됨[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
오류..
이 오류 어떻게 해결할 수 있을까요 ㅠㅠ
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
1-9. [자습] PIVOT 테이블 생성하기
WITH base as ( SELECT event_date, event_timestamp, event_name, user_id, user_pseudo_id, platform, MAX(IF(params.key='firebase_screen', params.value.string_value, NULL)) as firebase_screen, -- MAX(IF(params.key='food_id', params.value.int_value, NULL)) as food_id, MAX(IF(params.key='session_id', params.value.string_value, NULL)) as session_id, FROM advanced.app_logs CROSS JOIN UNNEST(event_params) as params WHERE -- event_date = "2022-08-01" # 적은 데이터로 쿼리를 작성하기 위해 만든 조건 event_date BETWEEN "2022-08-01" AND "2022-08-18" GROUP BY ALL ), fileter_event_and_concat_event_and_screen AS( -- event_name + screen 하면서(필요한 이벤트만 WHERE 조건에 걸어서 사용) SELECT * EXCEPT(event_name, firebase_screen, event_timestamp), CONCAT(event_name, "-", firebase_screen) AS event_name_with_screen, DATETIME(TIMESTAMP_MICROS(event_timestamp), "Asia/Seoul") AS event_datetime FROM base WHERE event_name IN("screen_view", "click_payment") ) -- step_number + cnt 만들기 -- step_number : CASE WHEN을 사용해 숫자 지정 , pivot_base as ( SELECT event_date, # 일자별로 퍼널별 유저 수 쿼리, 일자별로 처리하기 위해 event_date 추가 event_name_with_screen, CASE WHEN event_name_with_screen = 'screen_view-welcome' THEN 1 WHEN event_name_with_screen = 'screen_view-home' THEN 2 WHEN event_name_with_screen = 'screen_view-food_category' THEN 3 WHEN event_name_with_screen = 'screen_view-restaurant' THEN 4 WHEN event_name_with_screen = 'screen_view-cart' THEN 5 WHEN event_name_with_screen = 'click_payment-cart' THEN 6 ELSE NULL END AS step_number, COUNT(DISTINCT user_pseudo_id) as cnt FROM fileter_event_and_concat_event_and_screen GROUP BY ALL HAVING step_number IS NOT NULL ORDER BY event_date -- WHERE -- user_pseudo_id = "2173465695.8694960923" -- user_pseudo_id = "2173465695.8694960923" :event_name_with_screen = screen_view-welcome의 user_id는 NULL -> home에서 로그인 -- food_detal, search 등 event_name_with_scree의 여러 요소들을 확인해보기 ) # [자습] 위 테이블을 screen_view 타입별로 피벗 테이블 만들기 쿼리 (위 테이블을 with 절로 만들고 아래 쿼리 실행) SELECT event_date, MAX(IF(event_name_with_screen="screen_view-welcome", cnt, NULL)) as `scren_view-welcome`, MAX(IF(event_name_with_screen="screen_view-home", cnt, NULL)) as `scren_view-home`, MAX(IF(event_name_with_screen="screen_view-food_category", cnt, NULL)) as `scren_view-category`, MAX(IF(event_name_with_screen="screen_view-restaurant", cnt, NULL)) as `scren_view-restaurant` FROM pivot_base GROUP BY event_date ORDER BY event_date과제 올립니다 감사합니다
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
67강 댓글
안녕하세요 강사님 혹시 67강에서 댓글 기능을 구현 한 후에 댓글을 보면 입력한 댓글과 밑에 입력한 시간 가운데에 content라는 글자가 계속 써져있는데 혹시 저걸 없애는 방법이 있을까요?
-
미해결[Unity] 함께 만들어가는 방치형 게임 개발
ArgumentNullException : Value cannot be null
17분까지는 구현이 잘되었는데 27분에 코드 수정 후 되지 않습니다. 오류가 나는 원인을 알고 싶습니다.Main_UI.cs 206 Stage_Mng.cs 42 Main_UI.cs 260
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
3-7. 리텐션 쿼리 작성 및 질문(Weekly, Montly)
안녕하세요,강의 수강하면서 Weekly, Monthly Retention 쿼리를 작성해보았습니다!그리고 질문이 하나 있는데, 첨부해드린 코드는 현재 첨부해드린 사진처럼 오류가 발생합니다. 그런데 Weekly Retention 쿼리를 전부 주석처리하면 Monthly Retention 쿼리는 정상 작동합니다. 반대로 Monthly Retention 쿼리를 주석처리하면 Weekly Retention 쿼리는 정상 작동합니다.이 현상의 원리에 대한 감이 잡히지 않아서 질문드립니다!그 외에 쿼리 관련해서 고칠 점이 있다면 편하게 말씀해주시면 감사하겠습니다!WITH base AS ( SELECT user_id, user_pseudo_id, event_name, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime FROM advanced.app_logs WHERE event_date BETWEEN "2022-08-01" AND "2022-11-03" ), first_week_and_diff AS ( SELECT *, -- DATE_DIFF(event_date, first_date, DAY) diff_of_day DATE_DIFF(event_week, first_week, WEEK) diff_of_week FROM ( SELECT DISTINCT -- 일자별로 중복 제거 user_pseudo_id, -- DATE_TRUNC DATE_TRUNC(MIN(event_date) OVER (PARTITION BY user_pseudo_id), WEEK(MONDAY)) AS first_week, MIN(event_date) OVER (PARTITION BY user_pseudo_id) AS first_date, DATE_TRUNC(event_date, WEEK(MONDAY)) AS event_week, event_date FROM base ) ), first_month_and_diff AS ( SELECT *, -- DATE_DIFF(event_date, first_date, DAY) diff_of_day DATE_DIFF(event_month, first_month, MONTH) AS diff_of_month FROM ( SELECT DISTINCT user_pseudo_id, --DATE_TRUNC DATE_TRUNC(MIN(event_date) OVER (PARTITION BY user_pseudo_id), MONTH) AS first_month, DATE_TRUNC(event_date, MONTH) AS event_month, MIN(event_date) OVER (PARTITION BY user_pseudo_id) AS first_date, event_date FROM base ) ) -- Weekly Retention SELECT *, ROUND(SAFE_DIVIDE(user_cnt, first_cnt), 3) AS week_retention_rate FROM ( SELECT *, FIRST_VALUE(user_cnt) OVER (ORDER BY diff_of_week) AS first_cnt FROM ( SELECT diff_of_week, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM first_week_and_diff GROUP BY diff_of_week ) ) ORDER BY diff_of_week; -- 추가. Monthly Retention SELECT *, ROUND(SAFE_DIVIDE(user_cnt, first_cnt), 3) AS month_retention_rate FROM ( SELECT *, FIRST_VALUE(user_cnt) OVER (ORDER BY diff_of_month) AS first_cnt FROM ( SELECT diff_of_month, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM first_month_and_diff GROUP BY diff_of_month ) ) ORDER BY diff_of_month;
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
1-9 PIVOT문제 풀기
안녕하세요 카일스쿨님!1-9 PIVOT문제를 풀어봤습니다.먼저 PIVOT전에 제방식대로 푼코드를 드리겠습니다. 제가 WITH문을 자주 쓰지않고 그냥 한코드에 다쓰는 습관이 있어서 이런식으로 코드를 짜면 안좋은점이 있는지 피드백받고싶습니다. 또한 PIVOT문제를 풀긴 했는데 맞는 답인지 피드백받고싶습니다.-- PIVOT하기전에 제가 푼 것-- 내가 쓴 답 -- SELECT -- event_date, -- concat(event_name,'-', param.value.string_value) AS event_name_with_screen, -- CASE -- WHEN (event_name='screen_view' AND param.value.string_value='welcome') THEN 1 -- WHEN (event_name='screen_view' AND param.value.string_value='home') THEN 2 -- WHEN (event_name='screen_view' AND param.value.string_value='food_category') THEN 3 -- WHEN (event_name='screen_view' AND param.value.string_value='restaurant') THEN 4 -- WHEN (event_name='screen_view' AND param.value.string_value='cart') THEN 5 -- WHEN (event_name = 'click_payment' AND param.value.string_value='home') THEN 6 -- ELSE 0 -- END AS step_number, -- COUNT(DISTINCT user_id) AS cnt -- FROM `expanded-idiom-446706-d4.advanced.app_logs` -- CROSS JOIN UNNEST(event_params) AS param -- WHERE -- (event_date BETWEEN "2022-08-01"AND '2022-08-18') AND key='firebase_screen' -- GROUP BY event_date,event_name,param.value.string_value,step_number -- HAVING step_number !=0 -- ORDER BY step_number ,event_date-- PIVOT문제 푼것 WITH base AS ( SELECT event_date, event_timestamp, event_name, user_id, user_pseudo_id, platform, MAX(IF(event_param.key = 'firebase_screen',event_param.value.string_value,null)) AS firebase_screen, MAX(IF(event_param.key = 'food_id',event_param.value.int_value,null)) AS food_id, MAX(IF(event_param.key = 'session_id',event_param.value.string_value,null)) AS session_id FROM advanced.app_logs CROSS JOIN UNNEST(event_params) AS event_param WHERE -- event_date = '2022-08-01' # 적은 데이터로 쿼리를 작성하기 위해 만들어둔 조건 event_date BETWEEN '2022-08-01' AND '2022-08-18' GROUP BY ALL ) , fliter_event_and_concat_evnet_and_screen AS( -- screen과 event_name을 합치자(필요한 이벤트만 where 조건에걸어서 사용) SELECT * EXCEPT(event_name,firebase_screen,event_timestamp), CONCAT(event_name,'-',firebase_screen) AS event_name_with_screen, DATETIME(TIMESTAMP_MICROS(event_timestamp),'Asia/Seoul')AS event_datetime FROM base WHERE event_name IN ('screen_view','click_payment') ) SELECT event_date, SUM(IF(event_name_with_screen='screen_view-welcome'),cnt,0) AS `screen_view-welcome`, SUM(IF(event_name_with_screen='screen_view-home'),cnt,0) AS `screen_view-home`, SUM(IF(event_name_with_screen=' screen_view-food_category'),cnt,0) AS `screen_view-food_category`, SUM(IF(event_name_with_screen='screen_view-restaurant'),cnt,0) AS `screen_view-restaurant`, SUM(IF(event_name_with_screen='screen_view-cart'),cnt,0) AS `screen_view-cart`, SUM(IF(event_name_with_screen='click_payment-cart'),cnt,0) AS `click_payment-cart` FROM fliter_event_and_concat_evnet_and_screen GROUP BY ALL ORDER BY event_date
-
미해결[Unity] 함께 만들어가는 방치형 게임 개발
Item DB Firebase 연결
Axe, Mana, Dice 까지는 firebase에 추가가 되었는데, 이후에 추가로 아이템을 등록을 해보려고 Scriptable/Item 폴더 안에 Scriptable Object를 추가했더니 인게임에서 키값도 못찾고 DB에 당연히 등록도 안되네용.. 어떻게하면 좋을까요 ㅠ
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
Item_Holder 대해 질문 드립니다.
ItemDB 강의를 듣고 있는 중입니다. Data_Mng에 item_holder를 Dictionary로 만드셧는데 초기화 하는 부분이 어디인지 모르겠습니다. Character_Holder는 데이터 초기화 하는 부분 Holder s_holder = new Holder();if(Character_Holder.ContainsKey(data.m_Character_Name)){s_holder=Character_Holder[data.m_Character_Name];}else{ Character_Holder.Add(data.m_Character_Name, s_holder);}이 존재 해서 데이터 잘나오고 있는데요 item_holder 는 어디서 초기화를 진행하는지 모르겠습니다.
-
미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
CardStackView 오류 정상적으로 구현이 되지 않습니다.
import com.yuyakaido.android.cardstackview.CardStackLayoutManager해당 라이브러리들을 가지고 오지 못하는 것으로 보입니다.implementation "com.yuyakaido.android:card-stack-view:2.3.4"와jcenter() // Warning: this repository is going to shut down soon maven{url 'https://jitpack.io'}//추가구문을 추가하였지만 문제가 해소 되지 않아 문의드립니다.버전을 올리고 내리면서 새로운 프로젝트로 생성하여 진행하였으나 구현되지 않아,남겨주신 프로젝트를 다운받아서 실행보아도 문제 해소가 되지 않아 문의드립니다.[오류가 해소되지 않는 프로젝트] https://drive.google.com/file/d/1S5xBtcu6b3CJ8AP1V7Ji0_ANqICNWoxq/view?usp=drive_link
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
리텐션 과제
리텐션 과제 제출합니다 !쿼리를 짜는 것보다 유저를 어떤 기준으로 나눌 것인지, 리텐션을 어떻게 해석할 것인지 등의 부분이 항상 어려운 것 같습니다 . . ㅠㅠ최대한 배운 내용을 활용해서 인사이트를 도출해보고자 했습니다. 한번 봐주시면 감사하겠습니다 ㅎㅎ!https://bubble-supernova-783.notion.site/19defe88476380ef91abc06719a01ba9#1a4efe88476380e6bd84d4ac9602522d
-
미해결처음하는 플러터(Flutter) 기초부터 실전까지 [풀스택 Part4] (쉽고 견고하게 단계별로 다양한 프로젝트까지)
플러터 프로젝트를 시작할수 없어요
플러터 프로젝트가 안보여요플러터 정상적으로 설치후 선생님 강의 보며 따라 하면서 이미 New Project 하고 Flutter Project 선택 클릭하면서 플러터 프로젝트 만들었습니다. 당연히 flutter doctor 는 문제없이 잘 통과 했으니 플러터 프로젝트를 만들었겠죠. 그런데 어느날 부턴가 (아마 안드로이드 스튜디오 업데이트 이후) 갑자기 플러터프로젝트를 선택할수 있는 버튼이 사라졌어요 New Project 하면 Flutter Project 를 선택할수 있는 버튼이 보여야 하는데 안보이네요. 어떻게 하나요? 혹시 업데이트 이후 다른 사람도 그런가요?
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
7강 데이터바인딩 에러
7강 데이터바인딩 강의 부분에서 데이터 바인딩을 이용해서 회원가입 하는 코드로 바꾸니까 아래와 같은 에러가 뜨는데 혹시 이유를 알 수 있을까요?? 첫번째 방법으로 알려주신 코드에서는 정상 작동합니다. 2025-02-25 15:06:55.135 21860-21860 AndroidRuntime com...mple.login_noticeborad_sample E FATAL EXCEPTION: main Process: com.example.login_noticeborad_sample, PID: 21860 java.lang.IllegalArgumentException: Given String is empty or null at com.google.android.gms.common.internal.Preconditions.checkNotEmpty(com.google.android.gms:play-services-basement@@18.5.0:2) at com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(com.google.firebase:firebase-auth@@23.2.0:8) at com.example.login_noticeborad_sample.MainActivity.onCreate$lambda$2(MainActivity.kt:56) at com.example.login_noticeborad_sample.MainActivity.$r8$lambda$DKhI7UPT1Ljx4UCoyoqWCv0Qxw4(Unknown Source:0) at com.example.login_noticeborad_sample.MainActivity$$ExternalSyntheticLambda1.onClick(D8$$SyntheticClass:0) at android.view.View.performClick(View.java:8028) at android.view.View.performClickInternal(View.java:8005) at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0) at android.view.View$PerformClick.run(View.java:31229) at android.os.Handler.handleCallback(Handler.java:959) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loopOnce(Looper.java:232) at android.os.Looper.loop(Looper.java:317) at android.app.ActivityThread.main(ActivityThread.java:8705) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
Unresolved reference: auth 에러
안녕하세요 강사님.제가 파이어베이스 익명로그인 강의를 들으면서 노션에 기록해주신 2024년 이후 유튜브 영상으로 따라하고 강의 영상 그대로 따라했는데 아래와 같이 auth를 참조할 수 없다는 에러가 떠서 몇 시간동안 해결방법 찾으면서 해봤는데 다 안돼서 아예 프로젝트를 다 지우고 처음부터 꼼꼼히 다시 따라해보며 했는데도 안돼서 도움 요청합니다ㅜㅜe: file:///C:/Users/tnghk/AndroidStudioProjects/fb_login_test/app/src/main/java/com/example/fb_login_test/MainActivity.kt:13:37 Unresolved reference: auth 깃허브 공유는 아래 처럼 url로 공유해도 괜찮나요??https://github.com/SuHwanYY/android
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
1-9 마지막 테이블 피벗 해보기
안녕하세요 카일님강의 마지막에 주신 연습문제 해보았습니다. PIVOT에 어떤 연산자를 사용할 것인가?MAX로 할 경우 -> 별도의 연산된 결과값이 있는 base`가 필요할 것 같음. 이 경우 강의 중 작성된 cnt를 참조하여 작성할 수 있을 것 같으나 3중 쿼리라는게 마음에 걸림.SUM으로 할 경우 -> 강의 중 작성한 base 만으로 충분할 것 같음. 2중 쿼리로 충분해보임.따라서 B안으로 작성해보았습니다.WITH base AS ( SELECT event_date, event_timestamp, event_name, user_id, user_pseudo_id, platform, -- event_param, MAX(IF(event_param.key = 'firebase_screen',event_param.value.string_value, NULL)) AS firebase_screen, -- MAX(IF(event_param.key = 'food_id',event_param.value.int_value, NULL)) AS food_id, MAX(IF(event_param.key = 'session_id',event_param.value.string_value, NULL)) AS session_id, FROM advanced.app_logs CROSS JOIN UNNEST(event_params) AS event_param WHERE -- event_date = '2022-08-01' -> 적은 데이터로 쿼리를 작성하기 위해 입력한 임시 조건 event_date BETWEEN '2022-08-01' AND '2022-08-18' GROUP BY ALL -- LIMIT 100 -> 기초 구문 작성 완료 시 삭제 필요! ), filter_event_and_concat_event_and_screen AS ( -- name, screen concatate (필요한 이벤트만 WHERE 조건 걸어 사용) SELECT * EXCEPT(event_name,firebase_screen, event_timestamp), CONCAT(event_name, '-', firebase_screen) AS event_name_with_screen, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime FROM base WHERE event_name IN('screen_view', 'click_payment') ) # PIVOT 연습문제 SELECT event_date, SUM(IF(event_name_with_screen = 'screen_view-welcome',1,0)) AS `screen_view-welcome`, SUM(IF(event_name_with_screen = 'screen_view-home',1,0)) AS `screen_view-home`, SUM(IF(event_name_with_screen = 'screen_view-food_category',1,0)) AS `screen_view-food_category`, SUM(IF(event_name_with_screen = 'screen_view-restaurant',1,0)) AS `screen_view-restaurant`, SUM(IF(event_name_with_screen = 'screen_view-cart',1,0)) AS `screen_view-cart`, SUM(IF(event_name_with_screen = 'click_payment=cart',1,0)) AS `click_payment-cart`, FROM filter_event_and_concat_event_and_screen GROUP BY ALL ORDER BY event_date ASC
-
미해결코딩 몰라도 OK! CursorAI로 시작하는 개발 생활 (웹/초급)
교육 예시 파일들이 다운로드 안됩니다.
info 작성 예시 다운로드info 탬플릿 다운로드 두개의 파일들이 권한이 없네요???
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
counts와 cnt 차이
안녕하세요. Weekly retention을 구하고자 아래와 같이 쿼리를 작성했습니다.WITH base AS (SELECT DISTINCT user_id, event_name, DATETIME(TIMESTAMP_MICROS(event_timestamp),'Asia/Seoul') AS event_datetime, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp),'Asia/Seoul')) AS event_date, user_pseudo_id FROM `advanced.app_logs` WHERE event_date BETWEEN "2022-08-01" AND "2022-11-03" ), first_week_and_diff AS ( SELECT *, DATE_DIFF(event_week, first_week, WEEK) AS diff_of_week FROM ( SELECT DISTINCT user_pseudo_id, DATE_TRUNC(MIN(event_date) OVER(PARTITION BY user_pseudo_id), WEEK(MONDAY)) AS first_week, DATE_TRUNC(event_date, WEEK(MONDAY)) AS event_week FROM base ) ), user_cnt AS ( SELECT diff_of_week, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM first_week_and_diff GROUP BY diff_of_week ) SELECT *, ROUND(SAFE_DIVIDE(user_cnt, first_week_user_cnt), 2) AS retention_rate FROM ( SELECT diff_of_week, user_cnt, FIRST_VALUE(user_cnt) OVER(ORDER BY diff_of_week ASC) AS first_week_user_cnt FROM user_cnt );이렇게 쿼리 작성을 하니 오류가 발생했고 user_cnt AS ( SELECT diff_of_week, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM first_week_and_diff GROUP BY diff_of_week )이 부분에서 테이블 이름을 user_counts로 수정하니 제대로 동작함을 확인했습니다. 왜 이름 때문에 오류가 발생하는 것인지 궁금합니다.
-
해결됨[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
searchMovies에서 hasNextPage가 필요한 이유
안녕하세요 로펀님. 강의 잘 듣고 있습니다. useInfiniteQuery에서 반환하는 hasNextPage를 이용해 fetchNextPage를 하는데 searchMovies에서 작성한 const hasNextPage = count > page * pageSize 는 사용하지 않는 것 같아서 질문 올립니다! {data?.pages ?.map((page) => page.data) ?.flat() ?.map((movie) => ( <MovieCard key={movie.id} movie={movie} />))}에서도 searchMovies 에서 반환하는 page, pageSize, hasNextPage를 제외하고 data만 쓰시길래 작성하신 이유가 궁금합니다. useInfiniteQuery에서 반환하는 hasNextPage와는 다른 건가요??