हम BigQuery में लगातार व्युत्पन्न तालिकाएँ बनाने के लिए लुकर (डैशबोर्ड/रिपोर्टिंग समाधान) का उपयोग कर रहे हैं। जहां तक ​​बिगक्वेरी का संबंध है, ये सामान्य टेबल हैं, लेकिन नामकरण देखने वाले मानक के अनुसार है (यह डीबी + एसक्यूएल आदि के आधार पर हैश बनाता है) और तदनुसार तालिका का नाम देता है। ये टेबल प्रतिदिन निर्धारित समय में देखने के माध्यम से उत्पन्न होते हैं। BigQuery में तालिका के नाम नीचे की तरह दिखते हैं।

table_id 

LR_Z504ZN0UK2AQH8N2DOJDC_AGG__table1         
LR_Z5321I8L284XXY1KII4TH_MART__table2

LR_Z53WLHYCZO32VK3FWRS2D_JND__table3     

यदि मैं परिणामी तालिका को BQ में स्पष्ट नाम से क्वेरी करता हूं तो परिणाम अपेक्षित के रूप में वापस आ जाता है।

select * from `looker_scratch.LR_Z53WLHYCZO32VK3FWRS2D_JND__table3`

जब क्वेरी/नौकरी परिवर्तन के बाद तालिका को पुन: उत्पन्न किया जाता है, तो लुकर तालिका के नाम में हैश मान को बदल देता है। इसलिए मैं बाहरी दुनिया के लिए टेबल नाम में परिवर्तन पारदर्शी बनाने के लिए वाइल्डकार्ड टेबल क्वेरी के साथ एक दृश्य बनाना चाहता था।

लेकिन नीचे दी गई क्वेरी हमेशा विफल रहती है।

SELECT * 
FROM \`looker_scratch.LR_*\` 
where _table_suffix like '%JND__table3'

मुझे या तो शून्य मानों या त्रुटियों के साथ पूरी तरह से यादृच्छिक स्कीमा मिलती है जैसे कि:

Error: Cannot read field 'reportDate' of type DATE as TIMESTAMP_MICROS

कोई संघर्ष तालिका प्रत्यय नहीं हैं और मैंने सभी प्रकार की नियमित अभिव्यक्ति जांच (निचला, शामिल, आदि) का उपयोग किया है।

क्या ऐसा हो रहा है क्योंकि टेबल नामों में हैश मान हैं? मैंने अन्य डेटासेट पर कई परीक्षण चलाए हैं और कोई समस्या नहीं है, हम लंबे समय से वाइल्डकार्ड टेबल क्वेरी चला रहे हैं और किसी भी समस्या का सामना नहीं किया है।

कृपया मुझे अपने विचारों को जानने दें।

0
Pruthviraj Shivanna 25 सितंबर 2017, 22:19

1 उत्तर

सबसे बढ़िया उत्तर

जब आप नीचे दिए गए वाइल्डकार्ड का उपयोग कर रहे हों

`looker_scratch.LR_*`   

आप वास्तव में इस उपसर्ग के साथ सभी तालिकाओं की तलाश कर रहे हैं और - जब आप नीचे दिए गए खंड को लागू करते हैं

LIKE '%JND__table3'   

आप आगे इस तरह के प्रत्यय के साथ तालिकाओं में फ़िल्टर करते हैं

तो यहाँ चाल यह है कि बहुत पहले (कालानुक्रमिक) तालिका आपके आउटपुट की स्कीमा को परिभाषित करती है

अपनी समस्या का समाधान करने के लिए - सत्यापित करें कि क्या आपकी क्वेरी से मेल खाने वाली और तालिकाएं हैं और पहले वाली (जिसे पहले बनाया गया था) देखने के बजाय

2
Mikhail Berlyant 25 सितंबर 2017, 22:25
धन्यवाद मिखाइल, अब मैं समझता हूं कि प्रश्न क्यों विफल हो रहे थे। मैंने मान लिया था कि table_suffix मैच के आधार पर अंतर्निहित तालिका को खोजने के लिए यह काफी स्मार्ट था।
 – 
Pruthviraj Shivanna
26 सितंबर 2017, 09:50