我的datalake有json文件。每个文件都是一个表示为json的pandas框架。所以一个文件可能包含以下内容:
[
{
"col1":"1",
"col2":"3"
},
{
"col1":"2",
"col2":"4"
}
]
字符串
它可以翻译成这样一个框架:|col1| col2||- -|- -|| 1 | 3 || 2 | 4 |
我使用来自azure.storage.filedatalake
的DataLakeServiceClient
来处理datalake文件。
我想要的是query_file在我读取它之前只提取部分字符串。我的问题是为了实现这一点,我必须提供什么查询文本?首先可以这样做吗?
下面的例子将整个文件的内容作为字符串返回给我。我使用read_json
将其读入pandas框架中。我知道我可以在读取后将其作为框架使用,但我想在查询时进行选择。
示例代码:
import io
import pandas as pd
from azure.storage.filedatalake import DataLakeServiceClient, DelimitedJsonDialect
from azure.identity import ClientSecretCredential
adls_client = DataLakeServiceClient(account_url='...', credential=ClientSecretCredential(...))
filesystem_client = adls_client.get_file_system_client('...')
file_client = filesystem_client.get_file_client('test_dataframe.json')
input_format = DelimitedJsonDialect(has_header=True)
reader = file_client.query_file(
'SELECT * from DataLakeStorage', # the problem is here
file_format=input_format
)
json_str = reader.readall().decode('utf8')
df = pd.read_json(io.StringIO(json_str))
型
我尝试使用SELECT col1 from DataLakeStorage
,但它返回{}\n
。
1条答案
按热度按时间svgewumm1#
您可以使用
selected_df = df['col1']
而不是SELECT col1 from DataLakeStorage
来从JSON文件中仅获取column1。要仅获取第一行,您可以使用selected_rows = df.query('col1 > 1')
。下面是完整的代码:
字符串
你可以得到如下输出:
的数据