Skip to content

Commit 34dcd63

Browse files
committed
fix: transformation errors and add logs
1 parent 678edcc commit 34dcd63

7 files changed

Lines changed: 51 additions & 11 deletions

File tree

services/apps/snowflake_connectors/src/core/transformerBase.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,17 @@ export abstract class TransformerBase {
3636
try {
3737
return this.transformRow(row)
3838
} catch (err) {
39-
log.warn({ err, platform: this.platform }, 'Failed to transform row, skipping')
39+
const message = err instanceof Error ? err.message : String(err)
40+
const stack = err instanceof Error ? err.stack : undefined
41+
log.warn(
42+
{
43+
errMessage: message,
44+
errStack: stack,
45+
platform: this.platform,
46+
rowKeys: Object.keys(row),
47+
},
48+
'Failed to transform row, skipping',
49+
)
4050
return null
4151
}
4252
}

services/apps/snowflake_connectors/src/integrations/tnc/certificates/buildSourceQuery.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export const buildSourceQuery = (sinceTimestamp?: string): string => {
4141
org.domain_aliases AS ORG_DOMAIN_ALIASES,
4242
org.logo_url AS LOGO_URL,
4343
org.industry AS ORGANIZATION_INDUSTRY,
44-
org.n_employees AS ORGANIZATION_SIZE,
44+
CAST(org.n_employees AS VARCHAR) AS ORGANIZATION_SIZE,
4545
${LFID_COALESCE} AS LFID
4646
FROM analytics.silver_fact.certificates c
4747
INNER JOIN cdp_matched_segments cms
@@ -57,7 +57,7 @@ export const buildSourceQuery = (sinceTimestamp?: string): string => {
5757
WHERE c.user_email IS NOT NULL`
5858

5959
if (!IS_PROD_ENV) {
60-
select += ` AND cms.slug = 'pytorch'`
60+
select += ` AND cms.slug = 'cncf'`
6161
}
6262

6363
const dedup = `

services/apps/snowflake_connectors/src/integrations/tnc/courses/buildSourceQuery.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export const buildSourceQuery = (sinceTimestamp?: string): string => {
4848
org.domain_aliases AS ORG_DOMAIN_ALIASES,
4949
org.logo_url AS LOGO_URL,
5050
org.industry AS ORGANIZATION_INDUSTRY,
51-
org.n_employees AS ORGANIZATION_SIZE
51+
CAST(org.n_employees AS VARCHAR) AS ORGANIZATION_SIZE
5252
FROM analytics.bronze_census_ti.course_actions ca
5353
INNER JOIN analytics.bronze_census_ti.users tu
5454
ON ca.internal_ti_user_id = tu.internal_ti_user_id
@@ -68,7 +68,7 @@ export const buildSourceQuery = (sinceTimestamp?: string): string => {
6868
AND tu.user_email IS NOT NULL`
6969

7070
if (!IS_PROD_ENV) {
71-
select += ` AND e.project_slug = 'pytorch'`
71+
select += ` AND e.project_slug = 'openssf'`
7272
}
7373

7474
const dedup = `

services/apps/snowflake_connectors/src/integrations/tnc/courses/transformer.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,16 @@ export class TncCoursesTransformer extends TncTransformerBase {
1717
transformRow(row: Record<string, unknown>): TransformedActivity | null {
1818
const email = (row.USER_EMAIL as string | null)?.trim() || null
1919
if (!email) {
20-
log.debug({ courseActionId: row.COURSE_ACTION_ID }, 'Skipping row: missing email')
20+
log.warn(
21+
{ courseActionId: row.COURSE_ACTION_ID, rawUserEmail: row.USER_EMAIL },
22+
'Skipping row: missing email',
23+
)
2124
return null
2225
}
2326

2427
const courseActionId = (row.COURSE_ACTION_ID as string | null)?.trim() || null
2528
if (!courseActionId) {
29+
log.warn('Skipping row: missing courseActionId')
2630
return null
2731
}
2832

@@ -103,6 +107,16 @@ export class TncCoursesTransformer extends TncTransformerBase {
103107
const segmentSlug = (row.PROJECT_SLUG as string | null)?.trim() || null
104108
const segmentSourceId = (row.PROJECT_ID as string | null)?.trim() || null
105109
if (!segmentSlug || !segmentSourceId) {
110+
log.warn(
111+
{
112+
courseActionId,
113+
segmentSlug,
114+
segmentSourceId,
115+
rawProjectSlug: row.PROJECT_SLUG,
116+
rawProjectId: row.PROJECT_ID,
117+
},
118+
'Skipping row: missing segment slug or sourceId',
119+
)
106120
return null
107121
}
108122

services/apps/snowflake_connectors/src/integrations/tnc/enrollments/buildSourceQuery.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export const buildSourceQuery = (sinceTimestamp?: string): string => {
5757
org.domain_aliases AS ORG_DOMAIN_ALIASES,
5858
org.logo_url AS LOGO_URL,
5959
org.industry AS ORGANIZATION_INDUSTRY,
60-
org.n_employees AS ORGANIZATION_SIZE,
60+
CAST(org.n_employees AS VARCHAR) AS ORGANIZATION_SIZE,
6161
${LFID_COALESCE} AS LFID,
6262
cs.COURSE_STARTED_DATE,
6363
cs.COURSE_COMPLETED_DATE,
@@ -80,7 +80,7 @@ export const buildSourceQuery = (sinceTimestamp?: string): string => {
8080
WHERE e.user_email IS NOT NULL`
8181

8282
if (!IS_PROD_ENV) {
83-
select += ` AND e.project_slug = 'pytorch'`
83+
select += ` AND e.project_slug = 'openssf'`
8484
}
8585

8686
const dedup = `

services/apps/snowflake_connectors/src/integrations/tnc/enrollments/transformer.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ export class TncEnrollmentsTransformer extends TncTransformerBase {
1717
transformRow(row: Record<string, unknown>): TransformedActivity | null {
1818
const email = (row.USER_EMAIL as string | null)?.trim() || null
1919
if (!email) {
20-
log.debug({ enrollmentId: row.ENROLLMENT_ID }, 'Skipping row: missing email')
20+
log.warn(
21+
{ enrollmentId: row.ENROLLMENT_ID, rawUserEmail: row.USER_EMAIL },
22+
'Skipping row: missing email',
23+
)
2124
return null
2225
}
2326

@@ -74,7 +77,7 @@ export class TncEnrollmentsTransformer extends TncTransformerBase {
7477
} else if (productType?.toLowerCase() === 'training') {
7578
type = TncActivityType.ENROLLED_TRAINING
7679
} else {
77-
log.debug(
80+
log.warn(
7881
{ enrollmentId, productType, instructionType },
7982
'Skipping row: unrecognized product/instruction type',
8083
)
@@ -118,6 +121,16 @@ export class TncEnrollmentsTransformer extends TncTransformerBase {
118121
const segmentSlug = (row.PROJECT_SLUG as string | null)?.trim() || null
119122
const segmentSourceId = (row.PROJECT_ID as string | null)?.trim() || null
120123
if (!segmentSlug || !segmentSourceId) {
124+
log.warn(
125+
{
126+
enrollmentId,
127+
segmentSlug,
128+
segmentSourceId,
129+
rawProjectSlug: row.PROJECT_SLUG,
130+
rawProjectId: row.PROJECT_ID,
131+
},
132+
'Skipping row: missing segment slug or sourceId',
133+
)
121134
return null
122135
}
123136

services/apps/snowflake_connectors/src/integrations/tnc/tncTransformerBase.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,10 @@ export abstract class TncTransformerBase extends TransformerBase {
5252
source: OrganizationSource.TNC,
5353
identities,
5454
logo: (row.LOGO_URL as string | null)?.trim() || undefined,
55-
size: (row.ORGANIZATION_SIZE as string | null)?.trim() || undefined,
55+
size:
56+
typeof row.ORGANIZATION_SIZE === 'string'
57+
? row.ORGANIZATION_SIZE.trim() || undefined
58+
: undefined,
5659
industry: (row.ORGANIZATION_INDUSTRY as string | null)?.trim() || undefined,
5760
},
5861
]

0 commit comments

Comments
 (0)